5 分钟部署一个 OIDC 服务并对接 nightingale
前言
就如在5 分钟部署一个 OAuth2 服务并对接 Shibboleth-IdP 3.4.6中提过的那样,OAuth2 作为一个授权协议,他对于认证的部分是缺乏标准规范的。这就是 OpenID Connect ——简称 OIDC 诞生的原因。
下图是 OpenID Connect 的架构,这里的 Core 部分主要基于 OAuth2.0 协议,增加了一个基于 JWT 的 id_token 机制,同时规定了 userinfo 的 endpoint。同时在 Discovery 中允许自动发现各个 endpoint 的 URL 地址,因此对于 OIDC 的 SSO 集成在全流程都是标准化的,同时他也向下兼容 OAuth2.0 ,因此有很好的客户端兼容性。
Apereo CAS - OIDC
是的,Apereo CAS 也可以支持 OIDC,所以如果你已经按照 15 分钟部署一个 CAS 服务并对接 Shibboleth-IdP 3.4.6 的路程部署好了 CAS 服务的话,那么只需要略微的调整,就可以让他支持 OIDC 了,5 分钟足矣。
下文假定已经安装好了 cas 6.1
修改
build.gradle
,在dependencies
内进一步增加oidc
的编译依赖
注意 cas 目前已经更新到 6.3 版本,6.2 以后的版本在 build.gradle 中的配置有所区别,如果你使用的是新版本的话,此处因使用类似这样的格式引入。
在
cas-overlay-template/etc/cas/services/
目录内新增oidc-n9e-1004.json
文件,给夜莺注册oidc
服务。注意这里serviceId
要匹配夜莺rdb.yml
中配置的redirectURL
。
修改
cas-overlay-template/etc/cas/config/cas.properties
,增加这条配置。
现在执行 ./docker-build.sh
重新生成 docker
镜像,并重新运行之。我们的 OIDC 服务就部署好了。访问 https://cas.example.org/cas/oidc/.well-known
试试看,应该可以看到 OIDC 的各项源数据信息了
对接 nightingale
nightingale 是最优秀的开源监控框架之一,他支持基于 OIDC
协议的 SSO
。配置部分在 rdb.yml
的配置文件中的 sso
部分,如下所示:
这其中 ssoAddr
配置 OIDC
服务的根路径即可。redirectURL
则是 n9e
前端所在的服务地址的 /auth-callback
路由上。clientId
和 clientSecret
即是 OIDC
服务所配置的 client
信息。apiKey
是给商业版定制的功能,无需配置。attribtues
和 coverAttributes
部分就和 LDAP
的配置一样,做属性映射的作用。
完成所有配置后,重启 rdb
服务。注意重启后 ps -ef | grep rdb
看下服务是否正常启动。似乎如果由于 OIDC
对接部分自检无法通过的话,会直接退出 rdb
服务。如果调试期间有问题,建议直接在 n9e
按目录内直接 ./n9e-rdb
启动服务来观察服务启动状态。
如果一切正常,那么当你再次访问夜莺时,他就会自动重定向到你的 OIDC
服务进行认证授权了。并在完成认证后自动进入夜莺。
参考文献
以上
版权声明: 本文为 InfoQ 作者【冯骐】的原创文章。
原文链接:【http://xie.infoq.cn/article/a8026ed0ccba9ce50cb467421】。
本文遵守【CC BY-SA】协议,转载请保留原文出处及本版权声明。
评论 (1 条评论)