MeterSphere和GitLab单点登录认证集成

发布于 2022年10月27日

在上一篇和GitLab集成的教程《GitLab CI/CD集成MeterSphere自动化测试》中,我们详细分享了GitLab CI/CD集成MeterSphere一站式开源持续测试平台的具体操作。通过该教程,用户可以通过GitLab触发MeterSphere中的自动化测试用例,从而更好地推动测试左移等效果落地。

但上述文章只分享了如何在流水线上进行集成,而在实际的使用过程中,很多用户不仅仅需要考虑DevOps方面的集成,还要考虑如何仅用一套账号登录所有的DevOps体系中的系统(SSO),从而保证登录的安全性与便捷性。本文将分享MeterSphere一站式开源持续测试平台和GitLab单点登录认证集成的具体操作。

一、何为单点登录?

单点登录SSO(Single Sign On)简单来说是指在同一账号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的系统。常见的单点登录协议有: OIDC、OAuth2.0、SAML2.0、CAS等。关于单点登录原理和协议有兴趣的小伙伴可以自行了解,这边就不再赘述了。

图片

二、具体操作与配置

1. 资料查询

通过GitLab官网查询(https://docs.gitlab.com),GitLab支持多种登录方式,例如LDAP、SAML、OIDC、OAuth等。

图片

本文主要以OpenID Connect Identity进行单点登录认证。基于文档描述,我们可以发现,Gitlab内置了OpenID Connect Identity Provider。并且从下文得知,可以在已经部署的GitLab上通过URL直接查询相应的信息。

If your client allows importing OIDC settings from a discovery URL, you can use the following URL to automatically find the correct settings for GitLab.com:https://gitlab.com/.well-known/openid-configurationSimilar URLs can be used for other GitLab instances.

2. 具体的对接配置

① 按照GitLab官方文档说明,打开本地已经部署的GitLab平台,上述的地址如下图:

图片

② 基于第一步信息,使用Admin权限账号登录部署的MeterSphere平台,选择“系统参数设置”→“认证设置”,进行OIDC配置的创建。我们发现除了上述信息之外,还需要Client ID和Secret信息;

图片

而这些信息在GitLab官网文档也给出了提示:


“Refer to the OAuth guide(https://docs.gitlab.com/ee/integration/oauth_provider.html) for basic information on how to set up OAuth applications in GitLab. To enable OIDC for an application, all you have to do is select the openid scope in the application settings.”

③ 因此,我们还需要使用Admin账号登录GitLab。在“应用设置”中创建一个MeterSphere应用,填写回调地址,选择“openid”、“profile”、“email”等信息授权,如下图所示:

图片

创建完成后,可以在详细页面查询应用的Client ID和Secret信息;

图片

④ 基于第一步和第三步我们所获取的信息,在MeterSphere的“认证设置”页面中配置如下:

图片

3. 效果验证

① 在GitLab上创建一个普通人员账号,具体如下:

图片

② 打开MeterSphere登录界面,选择OIDC登录,可自动跳转至GitLab登录界面;

图片

③ 在GitLab登录页面输入第一步的用户名和密码,登录成功后,自动回调登录到MeterSphere平台中(初次登录需要MeterSphere管理员划分项目与权限);

图片

④ 同理,如果普通用户已经登录了GitLab平台,在同一个浏览器中打开MeterSphere登录页面并选择OIDC登录,可以直接进入MeterSphere平台,无需再次输入账号和密码。