# 利用 Gitlab 为 Sonarqube 提供单点登录服务

Gitlab 很贴心的提供了一个 **Oauth 2** 功能，可以作为 CI/CD 工具链的认证中心来使用。

Sonarqube 的官方插件只有一个 Github 的支持插件，因此这一功能需要借助第三方插件来完成。

* [项目地址](https://gitlab.talanlabs.com/gabriel-allaigre/sonar-auth-gitlab-plugin)
    
* [下载地址](http://nexus.talanlabs.com/content/groups/public_release/com/synaptix/sonar-auth-gitlab-plugin/1.0.0/sonar-auth-gitlab-plugin-1.0.0.jar)
    

## 实验环境

* **Gitlab 地址**：`http://10.211.55.75:32021`
    
* **Sonarqube 地址**：`https://10.211.55.75:32032/`
    

> 这里需要注意的是，要使用这一功能，Sonarqube 必须使用 https 协议提供服务。

## Gitlab 设置

访问 admin/applications/new，新建应用接入。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745940246057/e85ffe2c-a010-44c5-b8ab-9844f99b85f2.png align="center")

填写应用信息和地址之后提交，Gitlab 会显式 App ID 和 Token。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745940255451/b4eea778-3829-48a2-ab66-b72fce04d0d3.png align="center")

## Sonarqube 设置

`http://10.211.55.75:32021/admin/applications`

插件下载后，复制到 Sonarqube 的 plugins 目录中（一般在 `$SONARHOME/extensions/plugins` 目录下），然后重启 Sonarqube。

Sonarqube 重启之后，在 `updatecenter/installed` 会看到新的 **GitLab Auth** 插件，启用之后，可以进行后续设置。

访问路径 `settings?category=gitlab`，会看到 Gitlab 认证的设置。

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745940286688/fe7f8d1b-ca00-4b44-b804-84f1bf9e1bd0.png align="center")

> 这里建议打开允许注册的选项，如果一个用户账号在 Gitlab 中存在，却不存在于 Sonarqube 中，打开这一功能就可以自动进行账号的传播。

## 测试

新的登录界面如图所示：

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1745940299478/d07c325d-1e93-462f-bd15-8d7a38ceb7df.png align="center")

点击 Gitlab 图标会进入 Gitlab 认证界面，跟其他 Oauth 情况类似，就无需继续介绍了。
