0

我正在尝试允许用户使用表单身份验证或他们的 AD 帐户登录,但遇到了一些问题。我登录了一个 AD 帐户,但是Page.User.Identity.Name是空白的。我的 web.config 中有这个:

<connectionStrings>
    <add name="ADConnectionString" connectionString="LDAP://full.domain.address:389/DC=mydomain,DC=blah,DC=uk"/>
    <add name="myapp" connectionString="Data Source=myserver;Initial Catalog=myapp;User ID=myapp;Password=myapp" providerName="System.Data.SqlClient"/>
  </connectionStrings>
  <system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login.aspx" timeout="129600" name="CookieMonster" protection="All" slidingExpiration="true" cookieless="UseCookies"/>
    </authentication>
    <membership defaultProvider="ADMembershipProvider">
      <providers>
        <clear/>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
             connectionStringName="myapp" enablePasswordRetrieval="false" enablePasswordReset="true" 
             requiresQuestionAndAnswer="false" requiresUniqueEmail="false" 
             maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" 
             passwordAttemptWindow="10" applicationName="/"/>
        <add name="ADMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
             connectionStringName="ADConnectionString"/>
      </providers>
    </membership>
    <profile>
      <providers>
        <clear/>
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="myapp" applicationName="/"/>
      </providers>
    </profile>

我是否需要做其他事情才能使其正常工作?我尝试使用我的域帐户和 domain\myaccount 登录,但无济于事。

当我尝试时var u = Membership.GetUser("mydomain\\myuser");出现错误:映射到“userPrincipalName”时,用户名不得包含“\”。

4

2 回答 2

0

“sAMAccountName”不包括域。要解决您的问题,只需从您的用户名中删除符合条件的域:

代替var u = Membership.GetUser("mydomain\\myuser");

利用var u = Membership.GetUser("myuser");

这是因为您在连接字符串中指定了域,隐含地通过连接到特定的活动目录。

于 2013-08-01T21:36:42.300 回答
0

ADuserPrincipalName可能类似于user@full.domain.address. 尝试使用以下sAMAccountNameattributeMapUsername

<add name="ADMembershipProvider" 
  type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
  connectionStringName="ADConnectionString"
  attributeMapUsername="sAMAccountName"/>

如果无法连接,可能需要添加connectionUsernameconnectionUserPassword属性(查看MSDN文档)。

于 2012-05-14T12:16:00.890 回答