0

Open Directory に接続して Web 認証を提供するソフトウェアを継承しました。OD に接続すると魅力的に機能しますが、メインの認証プロバイダーとして Active Directory を使用するように移行したいと考えています。

明らかに、この 2 つの LDAP スキームには違いがあり、私は過去 6 時間をグーグル検索と読み取りに費やしましたが、まだ少し頭を悩ませています。Web インターフェースにログインしようとすると、これが表示されるエラーです (これは、Web インターフェースがhttp://cl.ly/Grgoのように見えるものです)。

例外の詳細:

System.DirectoryServices.DirectoryServicesCOMException: 操作エラーが発生しました。
[DirectoryServicesCOMException (0x80072020): 操作エラーが発生しました。]
LBOX.Membership.LDAPMembershipProvider.ValidateUser(String username, String password) in c:\Program Files\CruiseControl.NET\server\users.lbox.com\WorkingDirectory\LDAPMembershipProvider\LDAPMembershipProvider c:\Program Files\CruiseControl.NET\server\users.lbox.com\WorkingDirectory\LBUserService\Login.aspx.cs:21 System.Webの.cs:59
LBUserService.Login.loginButton_Click (オブジェクト送信者、EventArgs e) 。
UI.WebControls.Button.OnClick(EventArgs e)
+115 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +140
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +29
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2981

明らかにLDAPMembershipProvider.csweb.configファイルの 59 行目と関係があります。

web.configCruiseControl.netのファイル

<membership defaultProvider="LDAP">
  <providers>
    <add name="LDAP" 
         type="LBOX.Membership.LDAPMembershipProvider" 
         LDAPRoot="LDAP://10.0.1.19:389/cn=administrator,cn=users,dc=office,dc=lbox,dc=com" />
  </providers>
</membership>

からの59行目LDAPMembershipProvider.cs

// Attempt to log into the LDAP server as this user
DirectoryEntry root2 = new DirectoryEntry(LDAPRoot, distinctName, password, AuthenticationTypes.ServerBind);
DirectorySearcher searcher2 = new DirectorySearcher(root2);
searcher2.SearchScope = SearchScope.Subtree;
searcher2.Filter = String.Format("cn={0}", username);

私はLDAP://試してみましたが、接続できませんでした。単なる推測であっても、助けていただければ幸いです。アイデアは、AD がバインドされずにユーザー名とパスワードを認証できるようにすることです。

4

1 に答える 1

1

あなたのそのLDAPRootパスはweb.config私には少し怪しいように見えます-それは実際のユーザーを示しているようです:

LDAPRoot="LDAP://10.0.1.19:389/cn=administrator,cn=users,dc=office,dc=lbox,dc=com"
                               ****************
                               User "administrator" 

しかし、それは代わりにある種のコンテナであるべきではありませんか? ユーザーを認証するとき、LDAP メンバーシップ プロバイダーは、LDAP コンテナー内のデジタル ドアをノックしているユーザーを調べて、そのユーザーが有効かどうかを確認する必要があると思います。

その LDAP ルートに基づいてディレクトリ サーチャーを作成しています。通常、ユーザー内で検索しても結果は返されません。

私は使用しようとします

LDAPRoot="LDAP://10.0.1.19:389/cn=users,dc=office,dc=lbox,dc=com"

cn=usersこれはコンテナ内を検索するだけで、結果が得られる可能性が高くなります。

于 2012-05-24T20:39:54.740 に答える