最近在公司项目中使用了CAS单点登录框架。
先简单说下需求,有一个单点登录平台要和我们搭建的CAS平台进行对接,可以理解为单点对单点。
这种情况笔者因技术局限性也是第一次遇到,首先根据网上的一些资料,简单搭建了CAS的server端和client端。这部分有些技术博主写的非常详细,在此感谢他们的帮助。
笔者搭建过程中使用了CAS5.3.16 版本,当时在和第三方集成过程中确实遇到了一些问题,我在确认application.properties和services下面的配置无误后。仍然遇到了授权错误的问题,然后通过长时间的debug,发现5.3中ticket没有拿到。
碍于项目时间限制,笔者没有在这上面纠结。直接在github中下载了5.1和5.2版本。问题解决。由此,笔者在过程中也发现了cas版本间的一些差异,如果遇到了不好解决的问题,不妨换个版本试下。
下面我要说的是在和另一个单点登录平台集成的过程中,因为使用了Oauth2.0协议,CAS本身提供了对Oauth2.0协议的支持,所以,中间通过code获取token,再通过token获取userinfo的过程,由cas本身来做。我们要做的只需要要求另一侧的平台登录成功后,给我们传递code和client_name即可。
这两个参数是必传的,当然如果想直接重定向到客户端,可以再拼接上service参数,最终的链接形如:http://pass.sso.test/cas/login?client=xxx&code=xxx&service=xxx,这样的话,会直接跳过cas登录界面,直接认证成功,并按照service参数定位到客户端页面。
上述对接第三方的过程中也有不少坑,包括pac4j包版本的问题等等。主要是配置要细心。笔者有时间会总结一波使用攻略。
笔者是在高铁上用手机写的文章,有时间会完善相关代码贴出来供大家参考。有问题,大家讨论吧。