6

私のアプリケーションは、LDAP (通常は Active Directory) を介して承認されたユーザーを定義します。

  1. 顧客は、LDAP サーバー (TreeA) とグループ (GroupA) を定義します。GroupA のすべてのユーザーがアプリケーションを使用できます。
  2. ログイン時に、ユーザーは自分のユーザー名とパスワードを送信します。資格情報を使用した LDAP TreeA へのバインドが機能し、ユーザー アカウントが GroupA にある場合は、問題ありません。

2 つの Active Directory が相互に信頼しており、TreeA で指定された GroupA に TreeB のユーザーが含まれている状況に遭遇しました。したがって、ステップ 2 は失敗します。これは、TreeA に対して (TreeB からの) UserB を認証しようとしているためです。

アプリケーションは TreeA にアクセスできるので、GroupA を調べてそこで UserB を確認できると思います。しかし、ユーザー名とパスワードを認証するためにバインド要求を TreeB に送信する必要があることをどのように知るのでしょうか?

これにアプローチするより良い方法はありますか?
信頼関係があるため、このような TreeA へのバインド要求は自動的に TreeB に転送されますか??

4

4 に答える 4

1

LDAP サーバー (TreeA) の構成に問題がある可能性があります。TreeA と TreeB の間に信頼関係があると書いたので、(TreeB から) UserB を TreeA の GroupA のメンバーとして追加できます。これができれば、TreeA と TreeB の間で正しい方向に信頼を確立できたことになります。信頼とは、Active Directory B がユーザー パスワードのみを検証することのみを意味することを理解する必要がありますが、デフォルトでは、UserB は Active Directory A からのリソースにアクセスできません。UserB には、LDAP をサーバー A にバインドさせる権限はありません。この場合、UserB にサーバー A でのリモート ログイン権限と、GroupA への読み取りアクセス権、およびおそらく GroupA が存在する OU への読み取り権限を付与することで問題が解決します。Insight for Active Directoryを試すことができますAD アクセスを監視して、権限の問題を特定します。

問題の他の考えられる理由は、LDAP アクセスに使用する API の使用である可能性があります。あなたの質問では、APIに関する情報を書いていません。ldap_bind_sのような Win32 API を使用していますか、それとも .NET でDirectoryEntryを使用していますか? どちらの場合も、バインド中にアカウント名 (UserB の場合) とともに明示的にドメイン名を使用するか、null現在のユーザー資格情報をユーザーに名前とパスワードの両方に使用することが重要です。

TreeA へのすべてのアクセス (UserB に関するテストでも) に TreeA からの固定アカウントを使用することで問題を解決することもできますが、何らかのアプリケーションの使用のみが可能です。

いずれにせよ、質問の情報が増えると、問題と問題を解決する方法が絞り込まれる可能性があります。

于 2011-02-23T14:08:55.457 に答える
0

アプリケーションは TreeA にアクセスできるので、GroupA を調べてそこで UserB を確認できると思います。しかし、ユーザー名とパスワードを認証するためにバインド要求を TreeB に送信する必要があることをどのように知るのでしょうか?

GroupAのmember属性は、各メンバーの完全な識別名 (dn) を示します。これは次のようになります。

member: CN=User1,OU=People,DC=TreeA,DC=foobar,DC=com
member: CN=User2,OU=People,DC=TreeB,DC=foobar,DC=com

したがって、「User2」が認証を試みると、CN が一致し、「TreeA」ではなく「TreeB」に対して認証する必要があることがわかります。(おそらく、DN を AD サーバーのホスト名にマッピングするある種のテーブルがあるはずです。) または、「TreeA」から「そのようなユーザーがいない」場合は、ブルート フォースして「TreeB」を試してみてください。

2 つのツリーでユーザー名が重複している場合の処理​​方法を決定する必要があります。どちらが優先されますか?

もう 1 つの方法は、たとえば「user1@treea.foobar.com」のようなログイン名でログインするなどして、認証対象のツリーを指定するようユーザーに要求することです。

于 2011-02-22T16:13:19.667 に答える
0

オブジェクトが常に両方のサーバーに存在するように、ldap レプリケーションを使用する必要がありますか?

于 2011-02-22T15:40:42.140 に答える
0

互いに信頼しているドメイン A とドメイン B があり、ドメイン A のサーバー上のドメイン A に対してドメイン B のユーザー B を認証する場合は、次のようにする必要があります。

  1. Win32 API を使用して、ドメイン A でユーザー B を偽装します。

  2. DirectoryEntry を使用してドメイン A に対してユーザー B を認証すると、ドメイン A の AD にアクセスして、割り当てられたグループなどの他のユーザー情報を取得できます。

Windows 認証を使用する ASP.NET アプリケーションに実装しました。

それが役に立てば幸い、

于 2012-10-11T04:56:26.033 に答える