http://blog.csdn.net/peterwanghao/article/details/8825008

Shiro集成CAS是在1.2版本里新增的功能。

Shiro-cas模块将应用作为CAS客户端与CAS SSO服务器一起保护web应用。

CAS协议的一个基本理解:

1. 如果你想访问一个被CAS客户端保护的应用,而你还没有进行认证。你讲被重定向到CAS服务端的登录页面。在应用中你需要配置CAS的登录url地址。

http://application.examples.com/protected/index.jsp → HTTP 302

→ https://server.cas.com/login?service=http://application.examples.com/shiro-cas

2. 当你填上登录名和密码在CAS服务端进行认证后,你就被重定向到一个带有服务端票据的应用URL。服务端票据是一次性使用的令牌,可在CAS服务端标识用户的唯一性(或用户属性)。

https://server.cas.com/login?service=http://application.examples.com/shiro-cas → HTTP 302

→ http://application.examples.com/shiro-cas?ticket=ST-4545454542121-cas

3. 应用去CAS服务端询问票据的有效性,CAS服务端响应经过认证的用户唯一标识。CAS客户端将页面转发到受保护的页面。

http://application.examples.com/shiro-cas?ticket=ST-4545454542121-cas → HTTP 302

→ http://application.examples.com/protected/index.jsp

如何配置shiro与CAS服务器工作?

在你的应用中添加shiro-cas Maven依赖

<dependency>

<groupId>org.apache.shiro</groupId>

<artifactId>shiro-cas</artifactId>

<version>version</version>

</dependency>

在你的应用中添加服务端url,这个url被用来接收CAS服务端票据。

在Shiro配置中定义CasFilter:

[main]

casFilter = org.apache.shiro.cas.CasFilter

casFilter.failureUrl = /error.jsp

定义过滤器对应的url:

[urls]

/shiro-cas = casFilter

这样一来,当用户经过CAS服务端的有效票据认证后被重定向到应用的服务地址(/shiro-cas),这个过滤器接收服务端票据并创建一个可以被CasRealm使用的CasToken。

CasRealm使用被CasFilter创建的CasToken来验证用户的合法性。在你的shiro配置中添加CasRealm:

[main]

casRealm = org.apache.shiro.cas.CasRealm

casRealm.defaultRoles = ROLE_USER

#casRealm.defaultPermissions

#casRealm.roleAttributeNames

#casRealm.permissionAttributeNames

#casRealm.validationProtocol = SAML

casRealm.casServerUrlPrefix = https://server.cas.com/

casRealm.casService = http://application.examples.com/shiro-cas

casServerUrlPrefix是CAS服务端地址。

casService是应用服务地址,用来接收CAS服务端票据。

validationProcol值为SAML or CAS,默认是CAS。它依赖于CAS服务器的版本,SAML协议只能使用在CAS server version >= 3.1。

defaultRoles是认证通过后默认角色。

defaultPermissions是认证通过后默认权限。

roleAttributeNames是认证通过的用户的角色属性名称,用逗号分隔。

permissionAttributeNames是认证通过的用户的权限属性名称,用逗号分隔。

CAS服务端可以支持 ‘remember me’ 功能,这个信息通过SAML验证或CAS定制验证发布。你需要在Shiro配置中定义CasSubjectFactory:

[main]

casSubjectFactory = org.apache.shiro.cas.CasSubjectFactory

securityManager.subjectFactory = $casSubjectFactory

最后,为你的应用增加安全控制。定义需要保护的url地址和需要进行认证的CAS服务端地址:

[main]

roles.loginUrl = https://server.cas.com/login?service=http://application.examples.com/shiro-cas

[urls]

/protected/** = roles[ROLE_USER]

/** = anon

一个完整的配置例子:

[main]

casFilter = org.apache.shiro.cas.CasFilter

casFilter.failureUrl = /error.jsp

casRealm = org.apache.shiro.cas.CasRealm

casRealm.defaultRoles = ROLE_USER

casRealm.casServerUrlPrefix = https://server.cas.com/

casRealm.casService = http://application.examples.com/shiro-cas

casSubjectFactory = org.apache.shiro.cas.CasSubjectFactory

securityManager.subjectFactory = $casSubjectFactory

roles.loginUrl = https://server.cas.com/login?service=http://application.examples.com/shiro-cas

[urls]

/shiro-cas = casFilter

/protected/** = roles[ROLE_USER]

/** = anon

Apache Shiro 集成-Cas的更多相关文章

  1. cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

  2. Apache Shiro 集成Spring(二)

    1.依赖: <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-cor ...

  3. 十一、Spring Boot 集成Shiro和CAS

    1.Shiro 是什么?怎么用? 2.Cas 是什么?怎么用? 3.最好有spring基础 首先看一下下面这张图: 第一个流程是单纯使用Shiro的流程. 第二个流程是单纯使用Cas的流程. 第三个图 ...

  4. Spring Boot 集成Shiro和CAS

    Spring Boot 集成Shiro和CAS 标签: springshirocas 2016-01-17 23:03 35765人阅读 评论(22) 收藏 举报  分类: Spring(42)  版 ...

  5. 基于spring框架的apache shiro简单集成

    关于项目的安全保护,我一直想找一个简单配置就能达到目的的方法,自从接触了shiro,这个目标总算达成了,以下结合我使用shiro的经验,谈谈比较轻便地集成该功能. 首先我们先了解一下shiro是什么. ...

  6. 【Shiro】Apache Shiro架构之集成web

    Shiro系列文章: [Shiro]Apache Shiro架构之身份认证(Authentication) [Shiro]Apache Shiro架构之权限认证(Authorization) [Shi ...

  7. Apache Shiro:【2】与SpringBoot集成完成登录验证

    Apache Shiro:[2]与SpringBoot集成完成登录验证 官方Shiro文档:http://shiro.apache.org/documentation.html Shiro自定义Rea ...

  8. Apache Shiro:【1】Shiro基础及Web集成

    Apache Shiro:[1]Shiro基础及Web集成 Apache Shiro是什么 Apache Shiro是一个强大且易于使用的Java安全框架,提供了认证.授权.加密.会话管理,与spri ...

  9. SpringBoot中Shiro使用Pac4j集成CAS认证

    SpringBoot中Shiro使用Pac4j集成CAS认证 Pac4j 简介 Pac4j与Shiro,Spring Security一样都是权限框架,并且提供了OAuth - SAML - CAS ...

随机推荐

  1. 安装mysql-python需要碰到错误:Unable to find vcvarsall.bat 的解决方法

    1.发现从https://pypi.python.org/pypi/MySQL-python/1.2.5#downloads  下载下来的python版本是2.7

  2. web2py相关-------------------------------(一)初遇

    在第一次换工作的时候,希望转行 做编程,就面试了很多家,很多人问我 懂不懂html 书写,我非常诚实的告诉他们不会. 当然那时我很天真的认为,只要自己愿意学习这些都不是问题,事实证明人的学习能力是很快 ...

  3. c++11 auto_ptr介绍

    在代码里面看到了auto_ptr这个东西,正好以前一哥们曾经问过我这个问题..所以特意去搜了搜帖子,学习学习 http://www.cnblogs.com/gaoxianzhi/p/4451803.h ...

  4. 【C语言】中的布尔类型

    C语言中的布尔类型 一.相关基础知识 首先bool  true  false为C++中的关键字,C语言中默认不支持这几个字符! 二.具体内容 在C89 (ANSI C)标准中没有定义与布尔类型相关的内 ...

  5. ACM竞赛常用STL(二)之STL--algorithm

    <algorithm>无疑是STL 中最大的一个头文件,它是由一大堆模板函数组成的.下面列举出<algorithm>中的模板函数: adjacent_find / binary ...

  6. Java NIO之Selector

    选择器是JavaNIO重磅推出的一个概念:在旧有的系统中为了跟踪多端口消息,需要为每一个端口配备一个线程做监听:但是有了selector就不需要了,一个Selector可以管理一众渠道(channel ...

  7. JavaScript高级之函数的四种调用形式

    主要内容 分析函数的四种调用形式 弄清楚函数中this的意义 明确构造函对象的过程 学会使用上下文调用函数 了解函数的调用过程有助于深入学习与分析JavaScript代码. 本文是JavaScript ...

  8. list和数组之间相互的转化

    list变成数组: String[] str=(String[]) list.toArray(new String[list.size()]); 数组变成list: List<String> ...

  9. 【技术贴】解决Mysql启动服务报错1067 进程意外终止

    无法启动MYSQL服务错误1067 进程意外终止. 我使用2013-10-25_appserv-win32-2.6.0.exe安装的MySql,结果服务起不来. 于是细心机智的我发现,在F:\stud ...

  10. PYTHON连MS SQL示例

    先要设置WINDOWS的系统DSN的.然后才可以哟. import pyodbc conxn = pyodbc.connect('DSN=BBB; DATABASE=Northwind;UID=AAA ...