代码之家  ›  专栏  ›  技术社区  ›  Jaxidian

Active Directory成员资格提供程序-如何在此基础上展开?

  •  3
  • Jaxidian  · 技术社区  · 14 年前

    我正致力于通过广告会员提供商建立和运行MVC应用程序,我有一些问题要解决。我有一个基本配置设置,当我以foo@my.domain.com+密码登录时工作。

       <connectionStrings>
          <add name="MyConnString" connectionString="LDAP://domaincontroller/OU=Product Users,DC=my,DC=domain,DC=com" />
       </connectionStrings>
    
      <membership defaultProvider="MyProvider">
         <providers>
            <clear />
            <add name="MyProvider" connectionStringName="MyConnString"
                 connectionUsername="my.domain.com\service_account"
                 connectionPassword="biguglypassword"
                 type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
         </providers>
      </membership>
    

    但是,我想做一些其他的事情,我不知道该怎么做。

    1. 登录而不键入域(即“@my.domain.com”)。我意识到,只有我把自己限制在一个领域,这才有效——没关系。
    2. 在一个组织单位内组织最多n个不同组织单位的用户。从我当前的连接字符串可以看出,我正在验证 Product Users 欧点。我想为该组织内的各个公司创建组织单位,并将用户放入这些组织单位。如何在所有这些不同的OU中进行身份验证?
    3. 我正在尝试找出Active Directory成员资格提供程序如何与配置文件和角色提供程序相关联。是否也有这些版本的广告,或者我一直在使用SQL,在家长大,或者找到别人编写的代码?

    多谢!!

    3 回复  |  直到 11 年前
        1
  •  2
  •   Community Tales Farias    7 年前

    针对第3点:

    我不久前就回答了一个类似的问题: "How can i implement a role-hierarchy in an asp.net mvc app using activedirectorymembershipprovider" .

    WindowsTokenRoleProvider 这应该为您提供来自AD的用户角色的详细信息—它是只读提供程序,并且只提供用于 IsUserInRole GetRolesForUser 但可能足以满足您的需求。

        2
  •  1
  •   Jaxidian    14 年前

    对于第1项,我找到了我的答案。我需要补充 attributeMapUsername="sAMAccountName"

        <add name="MyProvider" connectionStringName="MyConnString"
             attributeMapUsername="sAMAccountName"
             connectionUsername="my.domain.com\service_account"
             connectionPassword="biguglypassword"
             type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    
        3
  •  0
  •   artisonus    14 年前

    针对第2点:

    我有同样的问题,所以我所做的就是从连接字符串中删除ou。 像这样:

    <add name="MyConnString" connectionString="LDAP://domaincontroller/DC=my,DC=domain,DC=com" />
    

    现在,我可以跨所有这些不同的OU对用户进行身份验证。