CAS认证流程解析-V1.0.doc_第1页
CAS认证流程解析-V1.0.doc_第2页
CAS认证流程解析-V1.0.doc_第3页
CAS认证流程解析-V1.0.doc_第4页
CAS认证流程解析-V1.0.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CAS 认认证证流流程程解解析析 北北 京京 先先 进进 数数 通通 信信 息息 技技 术术 有有 限限 公公 司司 E A I S CAS 证书 北京先进数通信息技术有限公司版本 V1 0 1 编编写写说说明明 标题 标题 CAS 认证流程解析认证流程解析 类别 文档类别 文档 存放位置 存放位置 编辑软件 编辑软件 Microsoft Word XP 中文版中文版 版本历史 版本历史 版本版本作者作者日期日期备注备注 V1 0梅光弦2013 1 22初稿 编写目的 编写目的 指导 CAS 新手熟悉 CAS 的认证流程 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 2 目目 录录 编写说明编写说明 1 目目 录录 2 1 CAS 原理描述原理描述 3 2 用户请求如何进入用户请求如何进入 CAS 认证流程认证流程 3 3 3 WEBFLOWWEBFLOW 配置文件及源码分析配置文件及源码分析 5 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 3 1 CAS原理描述原理描述 用户第一次访问CAS服务的客户端WEB应用时 访问 URL http localhost 80 casClient index jsp 部署在客户端Web应用的 cas AuthenticationFilter会截过此请求 生产service参数 然后rediect到 CAS服务的login接口 url为https meigx 8443 cas login service https cas 8443 cas login service http 3A 2F 2Flocalhost 3A80 2FcasC lient 2Findex jsp 2F 认证成功后 CAS服务器会生成认证cookie 写入浏览 器 同时将缓存到本地服务器 CAS服务器还会根据service参数生成 ticket ticket会保存到服务器 也会加在url后面 然后请求redirect回客户 端web应用 这时客户端AuthenticationFilter看到ticket参数后 会跳过 由 其后面的TicketValidationFilter处理 TicketValidationFilter会利用 httpclient工具访问cas服务的 serviceValidate接口 将ticket service都传 到此接口 由此接口验证ticket的有效性 TicketValidationFilter如果得到 验证成功的消息 就会把用户信息写入web应用的session里 至此为止 SSO会 话就建立起来了 以后用户在同一浏览器里访问此web应用时 AuthenticationFilter会在session里读取到用户信息 所以就不会去CAS认证 如果在此浏览器里访问别的web应用时 AuthenticationFilter在session里读 取不到用户信息 会去CAS的 login接口认证 但这时CAS会读取到浏览器传来 的cookie 所以CAS不会要求用户去登录页面登录 只是会根据service参数生 成一个ticket 然后再和web应用做一个验证ticket的交互 2 用户请求如何进入用户请求如何进入CAS认证流程认证流程 用户访问 CAS 的客户端 请求被 CAS 客户端的拦截器 AuthenticationFilter 拦截并将请求重定向到 CAS 服务器端名为 CAS 的 Servlet 进行处理 也就是 SafeDispatcherServlet 进行处理 SafeDispatcherServlet 继承 HttpServlet 也就是说他只是一个普通的 Servlet 该 Servlet 持有一个 DispatcherServlet 属性 delegate 这同 struts 的处理方式如出一辙 都是通过一个代理类来进行处理请求的 该类的 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 4 初始化也仅仅是调用代理类 delegate 的初始化 可以看出 DispatcherServlet 类才是处理请求的关键类 DispatcherServlet 类的完整路径 org springframework web servlet DispatcherServlet 这里也就是将请求交 给了 spring MVC 处理了 Spring MVC 核心配置文件是 cas servlet xml 在该文件中 webflow 将 与 springMVC 进行集成 这里有一个问题 就是 spring 何时开始加载 cas servlet xml 文件的呢 原来 在初始化 DispatcherServlet 的时候 会自动加载 servlet name servlet xml 文件 所以 cas servlet xml 是自动加载的 不需要在配置文件进行配置 参见关于 springMVC 的文章 交给 spring MVC 之后 spring MVC 又将请求交给了 webflow 处理 下面是 webflow 同 spring MVC 的结合 以上的配置就是将 webflow 框架作为 spring MVC 的一个节点来进行配置 webflow flow registry 节点就是注册了一个 webflow 流程 该流程的入口 也就是 ID login 这样 交给 springMVC 的请求路径如果是 login 的 则 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 5 有 springMVC 交给 webflow 处理 在 webflow 中 会定义一些视图 这些视图 都是以 view XXX 的形式存在的 那么 XXX 又是如何找到对应的页面呢 看 flow builder services 节点 我们会发现有个 view factory creator 属性 该属性就定义了视图解析工厂 该视图解析工厂是由视图解析器组成的 这里 只定义了一个视图解析器 就是 viewResolvers 该视图解析器是 springFramework 中的 ResourceBundleViewResolver 的一个实例 该类可以通 过 basenames 属性 找到 value 值对应的 properties 属性文件 该文件中式类 似 ke values 类型的内容 正是该文件将 jsp 文件映射成视图名称 至此 springMVC 与 webflow 已经集成完毕 3 3 WebWebF Flowlow配置文件及源码分析配置文件及源码分析 在 WEB INF 文件夹下的 login webflow xml 是登陆流程的主要配置文件 在该文件中 定义了用户登录的整个处理流程 首先 配置文件中的 on start 标签定义了用户第一次进入流程中的预处 理动作 该标签对应 spring 中的 id 为 initialFlowSetupAction 的 bean 查 看该 bean InitialFlowSetupAction 的代码 该类需要继承自 AbstractAction AbstractAction 方法是 org springframework webflow action 包中的类 是 webflow 中的基础类 该 类中的 doExecute 方法是对应处理业务的方法 就犹如 servlet 中的 service 方法一样 该方法的参数是 RequestContext 对象 该参数是一个流程的容器 该方法从 request 中获取 TGT 并且构建一个临时的 service 对象 用户请求 的服务 并且 将 TGT warnCookieValue 和 service 放在 FlowScope 作用域 中 流程的初始化完毕之后 就开始一系列的判断了 也就是进入 decision state 节点 这些节点是依次执行的 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 6 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 7 对应的 dicision state 走完之后 如果不存在 TGT 其实就会进入 voiwLoginForm 节点 该节点是一个 view state 类型的 这也就是说明该节点 是一个页面 view casLoginView 属性定义了该 view 对应的页面是 casLoginView 这个视 图会被 spring 的视图解析器解析成 WEB INF view jsp default ui casLoginView jsp 页面 用户这时候就 能看到一 个登陆界面了 需要注意的是 用户看到的登录界面中 会有 hidden 类型的一 个 lt 参数 该参 数可以理解成每个需要登录的用户都有一个流水号 只有有了 webflow 发放的 有效的流水号 用户才可以说明是已经进入了 webflow 流程 否则 没有流水 号的情况下 webflow 会认为用户还没有进入 webflow 流程 从而会重新进入 一次 webflow 流程 从而会重新出现登录界面 CAS认证案例展示 步骤一 用户请求访问cas客户端应用 http localhost 80 casClient index jsp cas客户端将请求重定向到cas服 务器端https meigx 8443 cas login 步骤二 cas服务器要求用户提供认证凭证 cas验证凭证通过结果如下 WHO username 111111 WHAT supplied credentials username 111111 ACTION AUTHENTICATION SUCCESS APPLICATION CAS WHEN Tue Jan 22 16 19 47 CST 2013 CLIENT IP ADDRESS 0 0 0 0 0 0 0 1 SERVER IP ADDRESS 0 0 0 0 cas服务器生成TGT结果如下 WHO username 111111 WHAT TGT 1 C5XscKlVQFNygATGUXyaB6fV73dcJnhlv41QJ1z2RtHyEqCnDd cas ACTION TICKET GRANTING TICKET CREATED APPLICATION CAS WHEN Tue Jan 22 16 22 40 CST 2013 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 8 CLIENT IP ADDRESS 0 0 0 0 0 0 0 1 SERVER IP ADDRESS 0 0 0 0 cas服务器根据service生成ST结果如下 WHO 111111 WHAT ST 1 3DYxLSTeCBSnrGDqyjlD cas for http localhost 80 casClient index jsp ACTION SERVICE TICKET CREATED APPLICATION CAS WHEN Tue Jan 22 16 23 52 CST 2013 CLIENT IP ADDRESS 0 0 0 0 0 0 0 1 SERVER IP ADDRESS 0 0 0 0 步骤三 cas服务器重定向到cas客户端 cas客户端AuthenticationFilter将ST 转交给Cas20ProxyReceivingTicketValidationFilter处理 Cas20ProxyReceivingTicketValidationFilter通过httpclient工具传递 service ST到cas服务器进行验证 步骤四 cas服务器根据客户端传递过来的ST从缓存中取service与客户端传递 过来的service进行验证 验证通过结果如下 WHO 111111 WHAT ST 1 3DYxLSTeCBSnrGDqyjlD cas ACTION SERVICE TICKET VALIDATED APPLICATION CAS WHEN Tue Jan 22 16 24 57 CST 2013 CLIENT IP ADDRESS 172 16 7 45 SERVER IP ADDRESS 172 16 7 45 步骤五 cas服务器将认证通过结果及用户信息传递给cas客户端 AuthenticationFilter将结果交给 Cas20ProxyReceivingTicketValidationFilter Cas20ProxyReceivingTicketV alidationFilter将用户信息存入session中 AuthenticationFilter允许用户 访问http localhost 80 casClient index jsp资源 步骤六 用户请求访问casClient的资源 AuthenticationFilter允许用户访问 资源 CAS 证书 北京先进数通信息技术有限公司版本 V1 0 9 步骤七 用户请求访问casClient之外的资源http localhost 80 test1 步骤八 test1 项目下的cas客户端AuthenticationFilter从session中无法取 出用户信息 将请求重定向到cas服务器端 步骤九 cas服务器从浏览器cookie中取出TGT 为service http localhost 80 test1 产生ST 结果如下 WHO 111111 WHAT ST 2 o3DAfffilWVGXigP0TqL cas for http localhost 80 test1 ACTION SERVICE TICKET CREATED APPLICATION CAS WHEN Tue Jan 22 16 29 05 CST 2013 CLIENT IP ADDRESS 0 0 0 0 0 0 0 1 SERVER IP ADDRESS 0 0 0 0 步骤十 cas服务器重定向到cas客户端http localhost 80 test1 cas客户 端AuthenticationFilter将ST转交给 Cas20ProxyRece

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论