Jenkins集成飞书SSO登录认证

概要

        目前很多公司都是通过jenkins做工作流集成的,本身提供了多种用户管理授权的机制,而飞书是目前企业中最流行的员工管理工具,所以我们很容易想到利用飞书的账号体系来替代jenkins本身的用户。而到目前为止,在网上搜索这一需求,还无法找到有效的解决方案(也许之后会有更多更好的方案),本文可以做为一个集成的参考,看是否能帮助大家。

集成平台说明

        集成飞书单点登录,依赖一个叫 “飞书集成平台” 的系统,很多开发者可能只听说过 “飞书开放平台”,他们并不是一个系统,因此需要企业管理员开通这个飞书集成平台的权限(勾选“身份集成”的使用权限)。

        平台访问地址(sso):https://anycross.feishu.cn/console/identity/sso-app-managerhttps://anycross.feishu.cn/console/identity/sso-app-managerhttps://anycross.feishu.cn/console/identity/sso-app-managerhttps://anycross.feishu.cn/console/identity/sso-app-manager

        另外一个前提,不同付费版本对接口有不同限制,请看下表:

集成方案1-SAML

        通过saml集成,官方有专门的模板,按照官方文档,傻瓜式配置一下就能用了,非常简单。

        文档地址:飞书集成平台 - 先进连接方式,提升集成效率标准、高效的系统集成能力,为企业构建强大的集成解决方案,实现企业的全域数据互通https://anycross.feishu.cn/documentation/sso/third-party/jenkinshttps://anycross.feishu.cn/documentation/sso/third-party/jenkinshttps://anycross.feishu.cn/documentation/sso/third-party/jenkins        当然这个方式也有一些小问题(看后续平台是否会优化),比如如果有多个jenkins服务器,需要每个建一个应用,关联字段当前只支持邮箱等等。如果不CARE这些问题或后续平台完善了模板相关功能的话,还是推荐使用这个方案的。

集成方案2-OIDC

        OIDC(OpenID Connect)是一个基于 OAuth 2.0 协议的身份层规范,旨在使应用程序能够进行端到端用户身份验证。官方提供的文档是基于OIDC的通用配置方案,具体和Jenkins的集,需要注意一些细节,如下所述。

        1. 创建应用-选择自建应用

        2. 填写基本信息

登录回调地址填写jenkins地址(可添加多个),需要注意这里是https !!

https://192.168.xxx.xxx:8443/securityRealm/finishLogin

如果需要邮箱信息,在scope中勾选email

换取token的方式选择 client_secret_basic

        3. 完善授权范围

        4. 点击启动应用

        下面是jenkins的相关配置

        1. 改造jenkins为https

        因为OIDC协议要求应用必须是基于HTTPS的服务,对于内网ip访问的机器需要进行一个简单的改造 (如果本身jenkins就是外网域名的https服务,可跳过这一步)

        以MAC电脑为例:

        首先生成一个签名密钥,记住设定的密码

keytool -genkeypair -alias jenkins -keyalg RSA -keysize 2048 -validity 365 -keystore /opt/homebrew/etc/jenkins/jenkins.jks

        编辑JENKINS启动配置

vi /opt/homebrew/Cellar/jenkins/2.xxx/homebrew.mxcl.jenkins.plist

        修改如下内容

找到以下部分:
<string>/opt/homebrew/opt/jenkins/bin/jenkins</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=8080</string>

修改为以下内容以启用 HTTPS:
<string>/opt/homebrew/opt/jenkins/bin/jenkins</string>
<string>--httpListenAddress=0.0.0.0</string>
<string>--httpPort=-1</string> <!-- 禁用 HTTP -->
<string>--httpsPort=8443</string>
<string>--httpsKeyStore=/opt/homebrew/etc/jenkins/jenkins.jks</string>
<string>--httpsKeyStorePassword=xxxxx</string>

外网域名访问的jenkins可使用正式的证书
<string>--httpsCertificate=/path/to/jenkins.crt</string> <!-- 指定证书路径 -->
<string>--httpsPrivateKey=/path/to/jenkins.key</string> <!-- 指定私钥路径 -->

        重启jenkins服务

brew services restart jenkins

        然后jenkins就可以通过 https://192.168.XX.XX:8443 访问了,如果浏览器报不安全链接,直接忽略(高级>继续访问)即可。

        2. 安装jenkins插件

        在插件管理中搜索  OpenId Connect Authentication,并安装

        3. 全局安全配置

安全域选为 Openid 连线登入

Client id, Client secret, well-know endpoint 在飞书sso应用配置界面可以找到,直接复制粘贴过来。

Override scope 填写也和应用配置界面勾选的保持一致,用空格分隔。

User name field name为映射的Jenkins user id,如果飞书上每个用户都有email,也可以设为email,否则直接用name就行,支持中文的id。

安全设置要勾上PKCE。

        4. 配置权限

请一定注意,在重登前先设置好新用户体系的权限,否则重登后就进不了系统管理了

添加用户权限时使用的用户名,就是 User name field name 配置的字段值

        个人推荐使用Role-based 插件进行用户组授权管理,具体配置的细节和本文主题无关,就不再赘述了。

小结

        总的来说,飞书集成平台还是很好用的,目前也没有发现什么坑点,本文也仅是为没什么做过sso集成配置的同学一个参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值