0

ユーザーがフォーム認証またはADアカウントのいずれかでログインできるようにしようとしていますが、いくつか問題があります。AD accountno、wにログインしていますが、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

ADuserPrincipalNameはのようなものかもしれませんuser@full.domain.address。:のsAMAccountName値を使用してみてくださいattributeMapUsername

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

接続できない場合はconnectionUsername、属性を追加する必要がある場合があります( MSDNドキュメントconnectionUserPasswordを確認してください)。

于 2012-05-14T12:16:00.890 に答える
0

「sAMAccountName」にはドメインが含まれていません。問題を解決するには、ユーザー名からドメイン修飾を削除するだけです。

それ以外のvar u = Membership.GetUser("mydomain\\myuser");

使用するvar u = Membership.GetUser("myuser");

これは、特定のActive Directoryに接続することにより、暗黙的に接続文字列でドメインを指定したためです。

于 2013-08-01T21:36:42.300 に答える