单点登录(二)cas服务端介绍
来源:互联网 发布:凤凰网域名注册 编辑:程序博客网 时间:2024/05/17 02:18
一、cas服务端接口
CAS 服务端总共对外定义了9 个接口,客户端通过访问这9 个接口与服务端交互,这9个接口为(绿色接口为客户端能用到的接口):
接口
说明
/login
登录认证接口
/logout
退出接口,负责销毁认证cookie
/validate
验证ticket 用的接口,CAS1.0 定义
/serviceValidate
验证ticket 用的接口,CAS2.0 定义,返回xml 格式的数据
/proxy
支持代理认证功能的接口
/proxyValidate
支持代理认证功能的接口
/CentralAuthenticationService
用于和远程的web services 交互
/remoteLogin(新增)
远程登录认证接口
二、服务端配置文件
login-webflow.xml:其中内容指定了当访问cas/login时的程序流程,初始“initialFlowSetup”
cas-servlet.xml:servlet与class对应关系
deployerConfigContext.xml:认证管理器相关
cas.properties:系统属性设置
applicationContext.xml:系统属性相关
argumentExtractorsConfiguration.xml:不是很了解它的用途
ticketExpirationPolicies.xml:ticket过期时间设置
ticketGrantingTicketCookieGenerator.xml:TGT cookie属性相关,是否支持http也在这儿修改
ticketRegistry.xml:保存ticket的类相关设置
uniqueIdGenerators.xml:ticket自动生成类设置
warnCookieGenerator.xml:同ticketGrantingTicketCookieGenerator.xml,生成的 cookie名为CASPRIVACY
三、接口详细说明:
a) /login
登录流程这部分要考虑到不同种类用户凭证的获取方案,以及客户应用传来的service 、gateway 、renew 参数的不同取值组合,CAS 为了实现流程的高度可配置性,采用了Spring Web Flow 技术。通过CAS 发布包里的login-webflow.xml 、cas-servlet.xml 、applicationContext.xml 这3 个文件,根据网上的资料和自己的理解,找出 了登录有关的所有组件,画出处理流程图。
图3 cas服务器端登录流程图
注:
1 : InitialFlowSetupAction: 是流程的入口。用 request.getContextPath() 的值来设置 cookie 的 Path 值, Cookie 的 path 值是在配置文件里定义的,但这个 Action 负责将 request.getContextPath() 的值设置为 Cookie 的 path 值,这是在 cas 部署环境改变的情况下,灵活地设置 cookie path 的方式;把 cookie 的值以及 service 参数的值放入 requestContext 的 flowscope 里。
2 : GenerateServiceTicketAction 此 Action 负责根据 service 、 GTC cookie 值生成 ServiceTicket 对象, ServiceTicket 的 ID 就是返回给客户应用的 ticket 参数,如果成功创建 ServiceTicket ,则转发到 WarnAction ,如果创建失败,且 gateway 参数为 true ,则直接redirect 到客户应用, 否则则需要重新认证。
3 : viewLoginForm 这是登录页面, CAS 在此收集用户凭证。 CAS 提供的默认实现是 /WEB-INF/view/jsp/simple/ui/casLoginView.jsp 。
4 : bindAndValidate 对应 AuthenticationViaFormAction 的 doBind 方法,该方法负责搜集登录页面上用户录入的凭证信息(用户名、密码等),然后把这些信息封装到 CAS 内部的 Credentials 对象中。用户在 casLoginView.jsp 页面上点击提交后,会触发此方法。
5:submit 对应 AuthenticationViaFormAction 的 submit 方法 , 如果 doBind 方法成功执行完, 则触发 submit 方法,此方法负责调用centralAuthenticationService 的 grantServiceTicket 方法,完成认证工作,如果认证成功,则生成 TicketGrantingTicket 对象,放在缓存里, TicketGrantingTicket 的 ID 就是 TGC Cookie 的 value 值。
6 : warn CAS 提供了一个功能:用户在一个 web 应用中跳到另一个 web 应用时, CAS 可以跳转到一个提示页面,该页面提示用户要离开一个应用进入另一个应用,可以让用户自己选择。用户在登录页面 viewLoginForm 上选中了 id=”warn” 的复选框,才能开启这个功能。
WarnAction 就检查用户有没有开启这个功能,如果开启了,则转发到showWarnView, 如果没开启,则直接redirect 到客户应用。
7 :SendTicketGrantingTicketAction 此Action 负责为response 生成TGC Cookie ,cookie 的值就是 AuthenticationViaFormAction 的submit 方法生成的 TicketGrantingTicket 对象的 ID 。
8 : viewGenerateLoginSuccess 这是 CAS 的认证成功页面。
b)/logout:( 对应实现类 org.jasig.cas.web.LogoutController )
处理逻辑:
1) removeCookie
2) 在服务端删除TicketGrantingTicket 对象(此对象封装了cookie 的value 值)
3 )redirect 到退出页面,有2 种选择:
if(LogoutController 的followServiceRedirects 属性为true 值,且url 里的service 参数非空){
redirect 到 sevice 参数标识的url
}
else{
redirect 到内置的casLogoutView (cas/WEB-INF/view/jsp/default/ui/casLogoutView.jsp ),如果url 里有url 参数,则此url 参数标识的链接会显示在casLogoutView 页面上。
}
c)/serviceValidate: (对应实现类 org.jasig.cas.web.ServiceValidateController )
处理逻辑:
如果service 参数为空或ticket 参数为空,则转发到failureView
验证ticket 。以ticket 为参数,去缓存里找ServiceTicketImpl 对象,如果能找到,且没有过期,且ServiceTicketImpl 对象对应的service 属性和service 参数对应,则验证通过,验证通过后,请求转发至casServiceSuccessView验证不通过,则转发到failureView 。
参考:http://www.cnblogs.com/hellowood/archive/2010/08/05/1793364.html
- 单点登录(二)cas服务端介绍
- cas单点登录介绍
- 单点登录-CAS介绍
- CAS单点登录(一):CAS服务端
- CAS单点登录(二)---非SSL协议 CAS服务端部署及客户端配置
- 单点登录(SSO)、CAS介绍
- 单点登录(SSO)、CAS介绍
- 单点登录(SSO)、CAS介绍
- 单点登录(三)cas服务端配置
- cas 单点登录服务端客户端配置
- CAS单点登录服务端与客户端配置
- CAS单点登录(一)---CAS介绍
- cas系列(二)--cas单点登录配置
- CAS单点登录3--服务端登录页个性化
- Cas单点登录介绍及视频教程
- Cas单点登录介绍及视频教程
- 单点登录之CAS简单介绍
- Mvc4单点登录之一Cas简单介绍
- 当你输入一个网址的时候,实际会发生什么?
- 数据库 —— 事务
- SHELL DATE命令
- 开源力量公开课第三十三期- 手把手教你用Cococs2d-x开发跨平台移动应用
- JAVA-提高反射效率
- 单点登录(二)cas服务端介绍
- 数字信号处理讨论群 群 号:232099818
- java环境变量配置
- main 函数是怎样运行的
- REVERSE关键字之REVERSE索引
- 05_ 输入一系列整数,建立二叉排序数,并进行前序,中序,后序遍历
- 开源力量公开课第三十四期-《微软+开源:如何使用微软公有云Azure上的开源软件》
- nodejs 入门总结
- Mfg tool WINCE下载