最近接到了一个需求,技术团队迫切的希望开发过程中用到的林林总总的开源系统能够实现统一登录,免去频繁切换账户或忘记密码之苦。”恩。。就你了”,看着Kubesphere挺顺眼,就先拿你动刀吧。
翻看kubesphere的官网文档,果然不负所望,kubesphere3.1是支持oauth2登录功能的,并且已经内置了github和阿里云IDaas的插件,只需在ks-apiserver的配置文件中启用相应的oauth配置,即可实现;但是如果需要gitlab登录,就需要开发相应的插件了,这样的话,似乎就违背了低成本方便快捷实现的初衷了
转念一想,既然gitlab和github”同宗同姓”,那么github的配置是不是也可同样应用在gitlab上?于是乎投机取巧的使用github的配置代替,几番折腾下来,最终还是以失败收场,看来只能老老实实的开发插件了
下载kubesphere源码,认证插件目录位置 /pkg/apiserver/authentication/identityprovider/
接口定义
kubesphere官方已对OAuth2认证逻辑进行了抽象和封装,按照官方指引,provider只需要实现几个约定的接口即可
接口实现
kubesphere官方本身已经封装好了oauth验证逻辑,所以对于站在巨人肩上的开发者而言,只需要重新定义一个结构体gitlabIdentity,用以反序列化gitlab user api的用户信息
1 | golang复制代码package gitlab |
改动源码后,按照kubesphere的二次开发文档重新编译生成镜像并部署
配置文件
相对应的,ks-apiserver的配置文件kubesphere-config也要启用gitlab插件
1 | golang复制代码 kubesphere.yaml: | |
最终效果
真香!再也不需要不胜其烦的为技术人员创建账户、找回密码了,攒下来的时间足够喝几杯咖啡了🤔
文章均为原创,关注公众号云猿生\color{green} {云猿生} 云猿生获取更多知识
本文转载自: 掘金