简介

CAS服务端已经部署好,现在就是要基于CAS来做SSO的实现了。CAS的客户端每个语言都有,我使用的是python里面的django-cas-ng来完成,因为这个组件已经封装好了客户端的实现,比较简单,主要是为了展示实现的流程。

对于不熟悉django框架的同学,可以一步一步照着做,熟悉这个框架的同学看重点配置步骤就好了。

步骤

1. 在pycharm中讲代码clone下来,git地址 :  https://gitee.com/kevinliu_CQ/django-cas-ng-example.git

LDAP 开发单点登录 ldap实现单点登录_LDAP 开发单点登录

2. 安装django-cas-ng, 这个项目里面包含requirements.txt文件,如果你的pycharm已经安装了相关的插件,pycharm会自动提示安装,点击"install requirements“就会自动安装,如果没有插件,就手动pip安装。

LDAP 开发单点登录 ldap实现单点登录_服务器_02

手动安装:pip的安装,已经pycharm中虚拟环境的配置,如果不知道,自己百度一下吧。

pip install -r requirements.txt

LDAP 开发单点登录 ldap实现单点登录_登录页面_03

 3. 简述settings.py,详细的参数配置,请参考: https://djangocas.dev/docs/latest/configuration.html

CAS_SERVER_URL = 'https://mycas.yourdomain.cn:7998/cas/' #你的cas服务器的地址
CAS_VERSION = '3' #cas服务器的版本
CAS_REDIRECT_URL = "/index" #客户端认证成功或者退出后redirect的地址,一般都是业务系统的主页
CAS_LOGOUT_COMPLETELY=True #本应用登出以后,是否完全销毁cas服务器里面的相关数据,主要是ticket

4. 启动项目,并验证SSO。可以用cas-management 和django-cas-ng完成

   场景1: cas-management 登录成功后访问 django-cas-ng的页面   期望值: django-cas-ng不会跳转到cas的登录页面,直接登录成功了

  场景2: django-cas-ng 登录成功后 访问cas-management    期望值: cas-management不会跳转到cas的登录页面,直接登录成功,可以开始管理service。

需要先将需要认证的服务地址添加到cas中,我以127.0.0.1启动django的项目,添加服务如下:

LDAP 开发单点登录 ldap实现单点登录_服务器_04

5. 开始验证

LDAP 开发单点登录 ldap实现单点登录_登录页面_05

会跳转到cas的登录页面,认证完成后,输出用户的名称。

LDAP 开发单点登录 ldap实现单点登录_登录页面_06

登录成功以后访问: https://mycas.yourdomain.cn:8443/cas-management ,直接就不需要登录了。SSO就实现了

场景二的验证,大家自己完成吧。

 

结束语

 到此整个SSO的实现就完成了,在我测试中SLO(Single Log Out) 会有点问题,就是django-cas-ng或者cas-management登出以后,另外一个系统还是登录的状态,但是SLO的需求,没有SSO那么强烈。一般的使用场景,用户不会主动去登出的,所以就没有花时间去研究了。还有就是Chrome浏览器有时候会卡在cas登录,换成Firefox就行了,或者清除所有缓存数据就可以。

另外cas-server的高可用也没有涉及到,后期准备把cas-server迁移到K8S中,利用容器和K8S的优点来保障cas-server的可用性,cas-server的监控也可以在K8S中用prometheus完成

最后cas-server登录界面的自定义还需要自己去完成,这一块就需要具备SpringBoot 的知识了,留给其他同学完成吧。