9

企業の Active Directory を認証に使用するように Gerrit をセットアップしようとしています。多くの人がこれを機能させることができたことは知っていますが、私にはうまくいきません。

次のようにコマンドを実行するldapsearchと、正しい結果が得られるため、検索文字列が正しいことがわかります。

ldapsearch -h myserver -b "CN=Users,DC=mycompany,DC=com" -D "CN=adam,CN=Users,DC=mycompany,DC=com" -w mypassword "(sAMAccountName=adam)"

しかし、Gerrit 構成でこれらの同じ設定を使用しても機能しません。

[auth]
    type = LDAP
[ldap]
    server = ldap://myserver
    accountBase = CN=Users,DC=mycompany,DC=com
    groupBase = OU=Gerrit,DC=mycompany,DC=com
    user = CN=adam,CN=Users,DC=mycompany,DC=com
    password = mypassword
    referral = follow
    accountPattern = (sAMAccountName=${username})
    groupPattern = (cn=${groupname})
    accountFullName = displayName
    accountMemberField = memberOf
    accountEmailAddress = mail

自分のアカウントを使用してログインしようとすると、次の例外が発生しetc/error_logます。

[2012-05-04 10:03:04,595] ERROR com.google.gerrit.server.auth.ldap.LdapRealm : Cannot query LDAP to autenticate user
javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090627, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece^@]; remaining name 'CN=Users,DC=mycompany,DC=com'
    at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3072)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2978)
    at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2785)
    at com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1839)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1762)
    at com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1779)
    [...]

誰かが役立つ可能性のある同様の構成をセットアップしましたか?

4

4 に答える 4

4

申し訳ありませんが、私のせいです。私の設定ではldap.user、の代わりに設定名として使用していますldap.username。ADバインディングが正しく機能するように変更すると、

于 2012-05-07T16:21:05.857 に答える
1

あなたの例では を使用"CN=adam,CN=Users,DC=myusers,DC=com"していますが、エラーメッセージは、識別名が のようなものであることを示しています...,CN=Users,DC=NRII,DC=com。設定で指定したベース オブジェクトが正しいことを確認します。たとえば、どのエントリがcn=adam従属しているかなどです。

于 2012-05-04T11:32:07.303 に答える
0

私はそれを機能させるのに苦労しました(Gerrit 2.13.1)。当時、私は非常に規制の厳しい会社に所属していたので、会社の Active Directory に Gerrit の専用ユーザーを作成することを敢えて要求することはありませんでした。残念ながら、この会社 (Windows の場合) での標準的なユーザー作成プロセスは姓と名であり、AD ユーザー名は次のようになります。

CN=Doe、John、OU=EvilCorp ユーザー、DC=foo、DC=bar、DC=corp

       ^
       |   

専門家の目には、おそらくOU=EvilCorp Usersのスペース文字を通して問題が見られるでしょうが、これはカンマです

問題を作成したCN=Doe, Johnのような LastName, FirstName パターン。

Gerrit 専用ユーザー (名なしのGerritUser ) を作成したら、次の行:

ユーザー名 = CN=GerritUser、OU=EvilCorp ユーザー、DC=foo、DC=bar、DC=corp

受け入れられ、通常の個人用の Windows / AD ユーザー ID とパスワードでログインできました。

二重引用符の有無にかかわらず、CN=Doe\, John...のようにコンマをエスケープしようとすると、gerrit.config ファイルは無効であると宣言されることに注意してください。

正規表現の作成者にとっては、コンマのみを切り取った方が便利であることは明らかです。

注: Windows で gerrit を使用してテスト済み

etc/gerrit.config の要約

...
[auth]
type = LDAP
[ldap]
server = LDAP://xx.yy.zz.ww
username = CN=GerritUser,OU=EvilCorp Users,DC=foo,DC=bar,DC=corp
accountBase = ou=EvilCorp Users,dc=foo,dc=bar,dc=corp
accountPattern = (&(objectClass=user)(sAMAccountName=${username}))
accountFullName = displayName
accountEmailAddress = mail
...

etc/secure.config の要約

...
[ldap]
password = Password_Of_GerritUser
...
于 2016-12-14T11:11:28.837 に答える
0

エラーは、バインドせずに検索しようとしているということですが、それは LDAP アプリが行うことになっているため、Gerrit は提供された情報を使用してバインドし、検索する必要がありました。しかし、エラーは、そこでステップをスキップしていることを意味します。

于 2012-05-04T11:14:07.500 に答える