0

こんにちは、開発を行っているドメインとは異なるドメインに属するマシンにアクティブ ディレクトリがインストールされています。

また、2 つのドメイン間に信頼関係はありません。

そのドメインが "test.com" と呼ばれるとしましょう。

パスワード「admin_password」を持つ「test\administrator」という名前の管理者がいます

これらの設定を ActiveDirectoryMembershipProvider でセットアップすると、その Active Directory にアクセスしてログインし、ユーザーを検証できるようになります。これらの設定を使用しています

<configuration>
  <connectionStrings>
        <add name="ADService" connectionString="LDAP://test.com"/>
  </connectionStrings>
  <system.web>
     <compilation debug="true" targetFramework="4.0" />

      <authentication mode="Forms"> </authentication>

      <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
        <providers>
          <add name="AspNetActiveDirectoryMembershipProvider" connectionStringName="ADService" connectionUsername="test\administrator" connectionPassword="admin_password"
               type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"
               connectionProtection="None" requiresUniqueEmail="false" enableSearchMethods="true" applicationName="/"/>
        </providers>
      </membership>
</configuration>

しかし、同じ Web アプリまたは別のアプリからコードを記述しようとして、そのコードから Active Directory にアクセスしようとすると、ログインに失敗した、不明なユーザー名またはパスワードというエラーが表示されました。

これが私のコードです

DirectoryEntry de = new DirectoryEntry("LDAP://test.com", "test\administrator", "admin_password", AuthenticationTypes.ServerBind);

            var ds = new DirectorySearcher(de) { Filter = string.Format("(&(objectClass=user)(sAMAccountName={0}))", "user1@test.com") };
            SearchResultCollection users = ds.FindAll();

すべてのタイプの AuthenticationTypes を試しましたが、何も機能しませんでした。

4

1 に答える 1

1

ドメイン名を大文字にする必要があるのは非常にばかげているという問題を発見したので、ユーザー名は TEST\administrator にする必要があります

メンバーシッププロバイダーがこれに対処できたことに驚いています.

于 2011-02-04T22:23:09.490 に答える