跳到主要内容

Shiro 单点登录

单点登录

Shiro 1.2 开始提供了 Jasig CAS 单点登录的支持,单点登录主要用于多系统集成,即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中的任何一个,无须多次登录。此处我们使用 Jasig CAS v4.0.0-RC3 版本:
https://github.com/Jasig/cas/tree/v4.0.0-RC3

Jasig CAS 单点登录系统分为服务器端和客户端,服务器端提供单点登录,多个客户端(子系统)将跳转到该服务器进行登录验证,大体流程如下:

1、 访问客户端需要登录的页面http://localhost:9080/client/,此时会跳到单点登录服务器https://localhost:8443/server/login?service=https://localhost:9443/client/cas

2、 如果此时单点登录服务器也没有登录的话,会显示登录表单页面,输入用户名/密码进行登录;
3、 登录成功后服务器端会回调客户端传入的地址:https://localhost:9443/client/cas?ticket=ST-1-eh2cIo92F9syvoMs5DOg-cas01.example.org,且带着一个ticket;
4、 客户端会把ticket提交给服务器来验证ticket是否有效;如果有效服务器端将返回用户身份;
5、 客户端可以再根据这个用户身份获取如当前系统用户/角色/权限信息;

本章使用了和《第十四章 SSL》一样的数字证书。

服务器端

我们使用了 Jasig CAS 服务器 v4.0.0-RC3 版本,可以到其官方的 github 下载:https://github.com/Jasig/cas/tree/v4.0.0-RC3 下载,然后将其 cas-server-webapp 模块封装到 shiro-example-chapter15-server 模块中,具体请参考源码。

1、 数字证书使用和《第十四章SSL》一样的数字证书,即将localhost.keystore拷贝到shiro-example-chapter15-server模块根目录下;