4

私は sonarqube 5.6 へのアップグレードをテストしており、ldap 2.0 プラグインをインストールし、関連する構成をテスト 5.6 セットアップにコピーしました。

関連する設定は

sonar.security.realm=LDAP
ldap.url=ldaps://xxxx:636
ldap.bindDn=uid=xxxx,ou=xxxx,dc=xxxx,dc=xxxx
ldap.bindPassword=xxxx
ldap.user.baseDn=dc=xxxx,dc=com
ldap.user.request=(&(objectClass=person)(mail={login}))
ldap.user.realNameAttribute=cn
ldap.user.emailAttribute=mail

conf/sonar.properties に次の設定があります

sonar.log.level=DEBUG

起動時に私は見る

2016.07.26 23:57:29 INFO  web[o.s.p.l.LdapContextFactory] Test LDAP connection on ldaps://xxxx:636: OK
2016.07.26 23:57:29 INFO  web[org.sonar.INFO] Security realm started

ログインしようとすると、ログイン画面に「認証に失敗しました」と表示されます。ログファイルには、

2016.07.26 23:57:47 DEBUG web[http] GET / | time=67ms
2016.07.26 23:57:47 DEBUG web[http] GET / | time=187ms
2016.07.26 23:57:47 DEBUG web[http] GET /sessions/new | time=89ms
2016.07.26 23:57:53 DEBUG web[http] POST /sessions/login | time=71ms

同じ構成は、sonarqube 4.5.7 および ldap 1.4 でも正常に機能します。

さらに調査する方法についてのアイデアを歓迎します。

4

3 に答える 3

6

ほとんどの場合、既知の問題SONAR-7770 -アップグレード中に LDAP 構成が忘れられた場合、認証が失敗します。この問題については、アップグレード ノートが発行されていることに注意してください。

最も具体的には、関連する SonarQube プラグインと「conf/sonar.properties」内の関連する構成 (存在する場合は「sonar.security.realm」と「sonar.security.localUsers」を含む) を新しい SonarQube インスタンスにコピーすることを忘れないでください。そうしないと、移行後にロックアウトされます。

そのため、アップグレードもこの LDAP 構成が存在していることが重要です。それを見逃した場合、ここで先に進む最も簡単な方法は、LDAP 関連の構成を正しく設定してアップグレードをやり直すことです。

環境

アップグレード中、SonarQube はデータセットを更新し、(新機能に基づいて) 新しい情報をデータベースに保存することに注意してください。あなたの場合の問題は、アップグレードが部分的な構成 (設定されていないsonar.security.realmand sonar.security.localUsers) で行われたことであり、SonarQube はユーザーがローカルかどうかを判断できなかったため、デフォルトでローカルとして扱います。ローカル ユーザーは、外部認証プロバイダーに対して認証されるのではなく、ローカルで認証されます。これは実際にログに表示されているものです (そして、パスワードが SonarQube データベースではなく LDAP サーバーに存在するため、明らかに失敗しています)。

于 2016-07-27T06:46:10.177 に答える
3

SonarQubeのユーザーデータベース テーブルを手動で更新して修正しました。他のすべてのユーザーは LDAP によって管理されており、管理者だけがローカル ユーザーであると想定しています。

UPDATE sonarqube_production.users SET user_local = 0, external_identity_provider = 'ldap' WHERE id != 'admin';
于 2016-12-22T14:34:48.153 に答える