在我的 asp net mvc 项目中,我使用 ldap 进行身份验证和授权。
我有一个名为 op.sep.net 的子域,它是 sep.net 的子域。 所有需要验证的用户都在根域 sep.net 中定义,但组在子域中定义
这是我在 web.config 文件中的连接字符串:
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<clear />
<add name="AspNetActiveDirectoryMembershipProvider"
connectionStringName="ADService"
attributeMapUsername="sAMAccountName"
connectionUsername="sep\at.rahimi"
connectionPassword="1qaz!QAZ"
connectionProtection="None" enablePasswordReset="false"
enableSearchMethods="true" type="System.Web.Security.ActiveDirectoryMembershipProvider" />
</providers>
</membership>
以及连接字符串部分:
<connectionStrings>
<add name="ADService" connectionString="LDAP://OP-DC.op.sep.net/dc=op-dc,dc=op,dc=sep,dc=net" />
正如我提到的,用户 at.rahimi 位于 sep 域中
我的问题是,如果我使用 LDAP://OP-DC.op.sep.net 作为服务器,我会得到“用户名或密码不正确”并且无法进行身份验证,但是如果我使用 LDAP://sep .net 我可以进行身份验证,但我看不到子域中的那些角色
System.Web.Security.Roles.GetRolesForUser("at.rahimi")
我只能在 sep.net 中看到角色
如果有人能帮助我,我将非常感谢。
如果用C#连接LDAP,可以使用Directory Entry类来处理从下层到根域的认证。 如果将 PATH 路径指定为 Schema,则可以将帐户从子域导入到根域,也可以通过导入 PATH 路径并使用 PATH 来覆盖您正在查看的 BASEDN 信息。家长。