sonarqube配置choerodon后管理功能缺失


choerodon只是加了一个oauth,sonar原来的登录方式还依旧存在的,如果是用admin就在这里登录admin即可

原来的账号已经不能登录,查看数据库,发现用户表的密码相关字段已被自动置空:
image

刚才重建了sonar验证了一下,在使用choerodon平台认证的admin登录后,users表的密码相关字段会被自动置空,且原来的密码登录失效:

image

我们核实测试一下,谢谢反馈

你好~这个问题是我们的bug,在choerodon用户与sonarqube用户同名的情况下造成的,稍等我们更新下插件版本,感谢反馈。对于已经被更改的soanrqube管理员用户,可以重置下admin的密码:

update users set crypted_password = '$2a$12$uCkkXmhW5ThVK8mpBvnXOOJRLd64LJeHTeCkSuB3lfaR2N0AYBaSi', salt=null, hash_method='BCRYPT' where login = 'admin'

1、我们也尝试过上述重置密码的方法,但并不生效,包括针对7.6的docs也不生效:https://docs.sonarqube.org/7.6/instance-administration/security/
重置的方法对sonar软件本身来说应该是没有问题的,我们怀疑是认证的过程有些问题,导致即使重置后也没有进行正确的密码认证
2、修复后插件发布后麻烦回复通知一下,谢谢

1.对于重置密码也不成功,是因为之前的管理员用户已经被替换了,不再是sonarqube提供的原生用户;解决方案请看给你的私信。
2.插件版本已更新到1.4

1赞

@ChangpingShi 遇到了一样的问题,麻烦告知下如何解决,谢谢

你好,给你带来不便,敬请谅解,请执行下面操作用于恢复:

1.更新oauth插件版本

helm upgrade sonarqube c7n/sonarqube \
    --reuse-values \
    --set plugins.'install[0]'=https://file.choerodon.com.cn/choerodon-install/sonarqube/sonar-auth-choerodonoauth-plugin-1.4-RELEASE.jar \
    --version 0.15.0
  1. 重启sonarqube
kubectl scale deployment sonarqube-sonarqube -n c7n-system --replicas=0
kubectl scale deployment sonarqube-sonarqube -n c7n-system --replicas=1
  1. 更新数据库,恢复admin用户默认密码(admin)
UPDATE "public"."users" SET "login" = 'admin', "name" = 'Administrator', "email" = '', "crypted_password" = 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', "salt" = '48bc4b0d93179b5103fd3885ea9119498e9d161b', "active" = 't', "created_at" = 1565169287245, "updated_at" = 1565169290978, "scm_accounts" = NULL, "external_login" = 'admin', "external_identity_provider" = 'sonarqube', "user_local" = 't', "is_root" = 't', "onboarded" = 't', "homepage_type" = NULL, "homepage_parameter" = NULL, "hash_method" = 'SHA1', "uuid" = 'admin', "external_id" = 'admin', "organization_uuid" = NULL WHERE "id" = 1;

OK.
是否以后helm install安装的时候使用plugin1.4,就不需要操作后面2步了?

可以了,TKS

嗯 是的,上面方案是修复以前的bug。按最新文档安装就不会有这个问题了。

1、我们在一个旧的环境上执行了前2步更新操作(第3步因为之前admin没有被污染所以没有执行):
发现使用choerodon登录时,redirect url协议变为https,提示下面的错误:

error=“invalid_grant”, error_description=“Invalid redirect: https://idp-sonar.xxx.cn/oauth2/callback/choerodon does not match one of the registered values: [http://idp-sonar.xxx.cn/oauth2/callback/choerodon]”

手动将浏览器的回调地址改为http,后台日志仍然提示此错误:

2019.08.14 12:32:09 WARN web[AWyQAocjZYR20WpGAAHD][o.s.s.a.AuthenticationError] Fail to callback authentication with ‘choerodon’
com.github.scribejava.core.exceptions.OAuthException: Cannot extract an access token. Response was: {“error”:“invalid_grant”,“error_description”:“Redirect URI mismatch.”}
at com.github.scribejava.core.extractors.JsonTokenExtractor.extractAccessToken(JsonTokenExtractor.java:24)
at com.github.scribejava.core.extractors.JsonTokenExtractor.extract(JsonTokenExtractor.java:15)
at com.github.scribejava.core.oauth.OAuth20ServiceImpl.getAccessToken(OAuth20ServiceImpl.java:37)
at org.sonarqube.auth.choerodonoauth.ChoerodonIdentityProvider.callback(ChoerodonIdentityProvider.java:149)
at org.sonar.server.authentication.OAuth2CallbackFilter.handleOAuth2Provider(OAuth2CallbackFilter.java:97)
at org.sonar.server.authentication.OAuth2CallbackFilter.handleProvider(OAuth2CallbackFilter.java:77)
at org.sonar.server.authentication.OAuth2CallbackFilter.doFilter(OAuth2CallbackFilter.java:70)
at org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:126)
at org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:95)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:87)
at org.sonar.server.user.UserSessionFilter.doFilter(UserSessionFilter.java:71)

2、1.8中取消了sonar-gitlab-plugin-4.0.0.jar这个插件,后面是不打算用了吗?

补:查看了数据库中iam service中的auth client表中redirect url 地址是正常的http协议

cc @ChangpingShi @superlee

我们切换为HTTPS后自然就解决了。。。
发现sonar数据库中增加一条admin-choerodon的记录,不再与原生的admin冲突了