CAS认证(2):认证过程

上一部分主要是对webflow同spring MVC进行结合进行了粗略的讲解。这里,将对webflow定义的流程进行更加详细的说明。

前面说到用户的认证请求经过spring MVC 对应配置的/login 路径进入webflow中的viewLoginForm 也就是登录界面。该用户的登录界面通过

<transition on="submit" bind="true" validate="true" to="realSubmit">
    <set name="flowScope.credentials"value="credentials" />
    <evaluate expression="authenticationViaFormAction.doBind(flowRequestContext,flowScope.credentials)" />
</transition>

用户点击登录之后,就将登录请求提交到了realSubmit中。realSubmit执行的对应的是AuthenticationViaFormAction中的submit方法。在该方法中,首先通过

final String ticketGrantingTicketId =WebUtils.getTicketGrantingTicketId(context); 

判断用户请求中,是否存在TGT(Ticket grant ticket)。这里说明一下,TGT是以cookie形式存在CASServer域下的。默认情况是只有http请求才向CASServer提交的。该cookie为CASServer识别用户是否登录的唯一标示。如果存在,则认为是用户已经登陆过的,否则认为用户是没有登录过的。

然后一下方法获取service:

final Service service =WebUtils.getService(context);

这个service是对应的服务。就是在你访问某个应用程序的时候,该请求被统一认证的过滤器拦截之后跳转到统一认证进行认证。跳转的过程中,会把你之前的请求的路径记录下来并作为参数传递到统一认证。在统一认证系统中配置的所有可以使用统一认证系统的业务系统的配置信息。该认证请求到了统一认证之后,统一认证根据这个路径查找对应的系统的配置信息。详情参照系统管理部分。

如果不存在TGT,则通过下面方法新生成一个TGT。

String tempTGT= this.centralAuthenticationService.createTicketGrantingTicket(credentials);

如果TGT存在,则生成ST并将其放入到context中。ST是service ticket的缩写。顾名思义,该ticket是和service对应的。所以,如果验证ticket有效性的时候,发送的验证请求所带service参数同生成ST的时候的参数不一致,就会出现ticket异常。默认的,ST的有效性是有时间和次数的限制的。默认是ST使用一次就失效,在1000秒以后失效。详情参见《CAS中ticket的生成与管理》。

final String serviceTicketId = this.centralAuthenticationService.grantServiceTicket(ticketGrantingTicketId, service,credentials);
WebUtils.putServiceTicketInRequestScope(context, serviceTicketId);
putWarnCookieIfRequestParameterPresent(context);
return "warn";

在webflow中跳转到“warn”状态,该状态中主要是验证流程中是否存在warnCookie,如果存在,则跳转到showWarningView中,否则进入redirect。在往下就是跳转到认证之前的目标路径了。注意,这里跳转的过程中,将ST作为跳转路径中的一个参数进行传递了。

时间: 2025-01-17 16:21:48

CAS认证(2):认证过程的相关文章

CAS去掉HTTPS认证

如何去掉HTTPS认证? 说明:默认情况下HTTP也是可以访问CAS SERVER的,但认证,登陆,退出等操作均没有任何的效果.所以必须作出下面的修改 1.进入WEB-INF\spring-configuration目录  打开warnCookieGenerator.xml文件 修改p:cookieSecure的值为false 2.打开ticketGrantingTicketCookieGenerator.xml文件  同样修改p:cookieSecure的值为false 3.打开WEB-INF

SSH 协议原理、组成、认证方式和过程[转]

https://www.jianshu.com/p/8e5b7aea52b5 概述 SSH是(Secure SHell protocol) 的简写,安全外壳协议(SSH)是一种在不安全网络上提供安全远程登录及其它安全网络服务的协议. OpenSSH 是SSH (Secure SHell)协议的免费开源实现.SSH协议族可以用来进行远程控制,或在计算机之间传送文件.而实现此功能的传统方式,如telnet(终端仿真协议). rcp ftp. rlogin.rsh都是极为不安全的,并且会使用明文传送密

PPP PAP 认证 CHAP 认证

[实验名称] PPP PAP 认证 [实验目的] 掌握 PPP PAP 认证的过程及配置 [背景描述] 你是公司的网络管理员,公司为了满足不断增长的业务需求,申请了专线接入,你的客 户端路由器与 ISP 进行链路协商时要验证身份,配置路由器保证链路建立,并考虑其安全 性. [需求分析] 在链路协商时保证安全验证.链路协商时用户名.密码以明文的方式传输. [实验设备] 路由器(带串口) 2 台 V.35 线缆(DTE/DCE) 1 对 [实验原理] PPP 协议位于 OSI 七层模型的数据链路层,

微信服务号申请、认证、认证后

  微信公众号申请.认证:01. 账号申请开始------>02.申请账号结束----->7个工作日--->03.开始账号认证----->04.结束账号认证----->15个工作日--->05.账号认证通过 商家支付接口申请:     07.开始申请 商家微信支付接口----->08.结束申请 商家微信支付接口 ,等待审核---->7个工作日----->09.支付接口申请通过,进入技术集成阶段 -----------------------------

基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证

基于mosquitto的MQTT服务器---SSL/TLS 单向认证+双向认证 摘自:https://blog.csdn.net/ty1121466568/article/details/81118468 2018年07月19日 16:51:57 曾来过 阅读数:1632 本文为参考网上其他博文搭建出服务器后的步骤记录,如有冒犯,请私信!!! 目录... 3 第 1 章 安装Mosquitto. 4 1.1 方法一:手动编译安装... 4 1.2方法二:在Ubuntu下使用apt-get安装..

翻译:WebApi 认证--用户认证Oauth解析

The Web API v2用户认证模板提供了流行的应用用户认证场景,如.使用本地帐号的用户名密码认账 (包括创建用户.设置和修改密码)以及使用第三方的认证方式,如facebook,google等等– 在本地中包含了外部帐号的连接 所有的这些均通过使用一个OAuth2认证服务进行. To make all that happen the template combines quite a bit of new stuff together: OWIN, Katana authentication

自学Aruba7.1-Aruba安全认证-WPA2-PSK认证(web页面配置)

点击返回:自学Aruba之路 自学Aruba7.1-Aruba安全认证-WPA2-PSK认证(web页面配置) 1 管理员账号管理 Configuration---Administrator中 原文地址:https://www.cnblogs.com/yaoyaojcy/p/9290050.html

asp.net core 使用identityServer4的密码模式来进行身份认证(2) 认证授权原理

原文:asp.net core 使用identityServer4的密码模式来进行身份认证(2) 认证授权原理 前言:本文将会结合asp.net core 认证源码来分析起认证的原理与流程.asp.net core版本2.2 对于大部分使用asp.net core开发的人来说. 下面这几行代码应该很熟悉了. services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { o

?DRF?-----三大认证组件--认证组件

认证组件 铺垫: 源码分析 入口: restframework 框架内的 views 下的 APIView 的 dispatch方法 组件的最下面 有三个方法   分别是 认证组件  权限组件 和 频率组件 perform_authentication (认证组件) 校验用户 - 游客 合法用户 非法用户 游客: 代表校验通过 进入下一步校验 (权限校验) 合法用户: 代表校验通过 将用户 存储在 request.user 中 再进行下一步校验 非法用户: 代表校验失败 抛出异常 返回403 权

三大认证之认证组件和权限组件

一. 源码分析 1. APIView的dispath(self, request, *args, **kwargs) 2. dispath方法内self.initial(request, *args, **kwargs) # 认证组件: 校验用户 - 游客, 合法用户, 非法用户 # 游客: 代表着校验已经通过,直接进入下一步校验(权限校验) # 合法用户: 代表校验通过,将数据保存在request.user中,在进行下一步校验(权限校验) # 非法用户: 代表校验失败,抛出异常,返回403权限