博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cas client 4.0 整合 shiro
阅读量:4048 次
发布时间:2019-05-25

本文共 3683 字,大约阅读时间需要 12 分钟。

 

概念或其它内容可以参考我一系列的博客相关文章

 

1.Maven主要依赖

 

org.jasig.cas.client
cas-client-core
3.3.3
org.apache.shiro
shiro-spring
1.2.3
org.apache.shiro
shiro-ehcache
1.2.3
org.apache.shiro
shiro-cas
1.2.3

 

 

2.web.xml

 

CAS Validation Filter
org.springframework.web.filter.DelegatingFilterProxy
targetBeanName
shiroFilter
targetFilterLifecycle
true

 

 

3.shiro的Spring配置文件

1.主要是配置了casFilter 和 DefaultWebSecurityManager的subjectFactory参数;

2.casFilter 中 failureUrl 参数对应的地址 cas-failure需要自己实现,当登录认证失败的时候,会访问这个地址,可以通过该地址将该请求指向一个错误页面;LoginController中实现

3.注意Bean ShiroFilterFactoryBean属性loginUrl的值是 cas服务器地址,并将当前项目登录地址(注意那个/login)作为参数传入进去的。这里 /login和下面filterChainDefinitions中/login = cas保持一直;

 

 

/login = cas /logout = logout /static/** = anon /cas-failure = anon /** = user

 

 

 4.LoginController

1.failure方法是登录失败指定跳转到某条失败页面中

2.logoutUrl用于返回登出地址,实际的地址应该为https://sso.gqshao.com/adp-cas/logout?service=http://sso.gqshao.com:8080/adp-web/logout,/logout配置在shiro配置文件中filterChainDefinitions下ShiroFilterFactoryBean中

 

@Controllerpublic class LoginController {    @Value("${client.logoutUrl}")    public String logoutUrl;    @RequestMapping("/cas-failure")    public String failure() {        return "error/casFailure";    }    @RequestMapping("/logout-url")    @ResponseBody    public String logoutUrl() {        return logoutUrl;    }}

 

5.Shiro的Realm实现

继承CasRealm

 

public class MyCasRealm extends CasRealm {    /**     * 认证回调函数,登录时调用.     */    @Override    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken authcToken) {        return super.doGetAuthenticationInfo(authcToken);    }    /**     * 授权查询回调函数, 进行鉴权但缓存中无用户的授权信息时调用.     */    @Override    @SuppressWarnings("unchecked")    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {        List listPrincipals = principals.asList();        String name = listPrincipals.get(0).toString();        Map
attributes = (Map
) listPrincipals.get(1); SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo(); Set
roles = Sets.newHashSet("admin","operator"); authorizationInfo.setRoles(roles); Set
permissions = Sets.newHashSet("show-info"); authorizationInfo.setStringPermissions(permissions); return authorizationInfo; }}

 

 

6.注意

1.通过shiro-cas整合后AssertionHolder不可用

2.实际部署在tomcat时,Windows环境下catalina.bat文件中需要添加set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8;Linux环境中catalina.sh文件中配置JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8"

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://lqyci.baihongyu.com/

你可能感兴趣的文章
layui插件的使用
查看>>
JS牛客网编译环境的使用
查看>>
9、VUE面经
查看>>
关于进制转换的具体实现代码
查看>>
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>