尊重原创:https://www.cnblogs.com/xrab/p/5800623.html

效果展示:

Shiro 集成 Cas 实现单点

shiro项目详细介绍: 链接

1. 首先资源下载shiro 项目资源(基于maven),资源下载 :

链接:https://pan.baidu.com/s/1-ppIvgNP0DECp4NY2_fAGw 
提取码:3cmi 

2. cas-server 搭建 (有资源下载): https://blog.csdn.net/qq_29477175/article/details/89886123

首先遇到一个问题,注销时不会跳转到cas的登录页面,应该是 cas 自己设置的问题,这个问题已经解决,修改下cas.properties中  cas.logout.followServiceRedirects=true 即可,默认是被注释的。

3. 接着就是shiro集成cas-server的项目:资源下载:

链接:https://pan.baidu.com/s/1cNTb-819bDsGVXPQZpZSsQ 
提取码:sz8k 

这些配置文件、基本步骤在上面的原创中都可以看到。

感悟:

      其实就是之前的shiro项目当做cas-client端,去请求cas-server服务端;返回一个token进行授权操作。

      1. loginUrl 对应 http://localhost:8090/cas/login?service=http://127.0.0.1:8080/shiro/shiro-cas

      2. 有一个 CasFilter,设置登录走这个filter,在shiro的自定义权限内容中设置 /shiro-cas = casFilter ,filters中设置casFilter对应自己设置CasFilter。对应的class 为 org.apache.shiro.cas.CasFilter。

      3. 将securityManager 中原来的realm 改成 CasRealm。其实走的是CasRealm。

       新建一个CasRealm 继承 CasRealm,重写 doGetAuthenticationInfo 与 doGetAuthorizationInfo 方法,在认证方法(doGetAuthenticationInfo )中,通过从cas-server端获取了一个 AuthenticationToken,这个其实在cas-sever端已经验证过了,获取的AuthenticationToken 中只有一个用户的userID(唯一标识,也是登录时的用户名)。接着再进行一系列的操作:连接数据库、授权之类的。

    还有一个问题没解决:

          shiro集成cas成功后,第一次登录是没问题的,注销时再次登录,会报验证出错。。待解决。

 

 

 

 

相关文章: