Ldap nJupiter更改ADService Connectionstring@runtime

Ldap nJupiter更改ADService Connectionstring@runtime,ldap,ldapconnection,Ldap,Ldapconnection,我们正在开发一个网站,当用户尝试登录时,需要指向不同的LDAP提供商(ADService ConnectionString) 我们的方法是查看他们的登录名example@domain.com并使用映射文件(可能是sqlServer数据库)将他们的登录名映射到他们的adservice提供者,然后获取连接字符串。然后像往常一样继续 在下面的示例代码中,我需要IsAuthenticated来根据正确的AdService连接字符串进行身份验证,我只是不确定何时何地告诉nJupiter DataAcces

我们正在开发一个网站,当用户尝试登录时,需要指向不同的LDAP提供商(ADService ConnectionString)

我们的方法是查看他们的登录名example@domain.com并使用映射文件(可能是sqlServer数据库)将他们的登录名映射到他们的adservice提供者,然后获取连接字符串。然后像往常一样继续

在下面的示例代码中,我需要IsAuthenticated来根据正确的AdService连接字符串进行身份验证,我只是不确定何时何地告诉nJupiter DataAccess Ldap提供程序何时设置connectionstring。(通常对于nJupiter,它是在Web.Config文件中完成的-但我需要动态更改连接字符串)

因此,我们的login.aspx.cs页面包含以下代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (User.Identity.IsAuthenticated)
    {
        if (!string.IsNullOrEmpty(Request.QueryString["ReturnUrl"]))
        {
            Response.Redirect("~/AccessDenied.aspx");
        }
    }
}

nJupiter.DataAccess.Ldap支持在配置文件中同时配置多个服务器。我建议您在nJupiter.DataAccess.Ldap.config中配置所有要使用的服务器,如下所示:

<configuration>
    <ldapServers>
        <ldapServer value="MyServer1"><!-- config goes here --></ldapServer>
        <ldapServer value="MyServer2"><!-- config goes here --></ldapServer>
    </ldapServers>
</configuration>
<system.web>
   <membership defaultProvider="MyProvider1">
      <providers>
         <clear/>
         <add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
         <add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
      </providers>
   </membership>
</system.web>
<system.web>
   <membership defaultProvider="RedirctingMembershipProvider">
      <providers>
         <clear/>
         <add name="RedirctingMembershipProvider" type="MyNameSpace.RedirctingMembershipProvider,MyAssembly" />
         <add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
         <add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
      </providers>
   </membership>
</system.web>
然后在web.config中将此提供程序注册为默认提供程序,如下所示:

<configuration>
    <ldapServers>
        <ldapServer value="MyServer1"><!-- config goes here --></ldapServer>
        <ldapServer value="MyServer2"><!-- config goes here --></ldapServer>
    </ldapServers>
</configuration>
<system.web>
   <membership defaultProvider="MyProvider1">
      <providers>
         <clear/>
         <add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
         <add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
      </providers>
   </membership>
</system.web>
<system.web>
   <membership defaultProvider="RedirctingMembershipProvider">
      <providers>
         <clear/>
         <add name="RedirctingMembershipProvider" type="MyNameSpace.RedirctingMembershipProvider,MyAssembly" />
         <add name="MyProvider1" ldapServer="MyServer1" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
         <add name="MyProvider2" ldapServer="MyServer2" type="nJupiter.DataAccess.Ldap.LdapMembershipProvider,nJupiter.DataAccess.Ldap" />
      </providers>
   </membership>
</system.web>