单点登录认证流程

一、流程说明

第一步:访问cas过滤链接ssoLogin,拼凑定向到 CAS_SERVER 获取ticket的URL

第二步:CAS_SERVER校验用户信息,生成Ticket

第三步:重新定向到访问客户端的ssoLogin并附加Ticket参数和值

第四步:根据传来的Ticket拼凑定向到CAS_SERVER的连接去校验Ticket的合法性

第五步:CAS_SERVER校验成功后,会返回XML报文并重新定向到访问客户端的ssoLogin    解析该XML报文,构造用户信息对象存储在session中    然后根据ssoLogin设置的loginSuccessUrl跳转到登录成功后的访问页面

二、具体步骤

1、加载所需jar包

2、在web.xml中配置需要单点登录过滤的路径为/ssoLogin

本地客户端URL:http://localhost:8080/saiku/ssoLogin

远程cas服务器地址CAS_LOGIN_URL:https://192.168.6.100/ptyhzx-sso/login

3、流程剖析

(1) 访问ssoLogin带上用户名和密码 - requestUrl

https://localhost:8080/saiku/ssoLogin?username=user1&password=123456

(2) 构造第一次访问CAS_SERVER的getTicketURL

getTicketURL = CAS_LOGIN_URL ? SERVICE参数

目的:获取TICKET

http://CAS_SERVER/ptyhzx-sso/login?service=http%3A%2F%2Flocalhost:8080%2Fsaiku%2FssoLogin&renew=true&other=form&accessToken=C45BD9AE005909FE2F9EC45D54FF70D2ADD106142B17461AEC94AD4A098A7420025D7694680916B5276CDDE8FA085C5A
说明:

后台根据 requestUrl 构造 service 参数

service的值 = 去掉用户名密码后的requestUrl参数 + renew参数 + other参数 + 用户名密码加密后的accessToken

拼接完毕后再对service整体编码作为最终的service值

构造获取getTicektURL完毕后立刻重定向到该URL去

(3) CAS_SERVER根据accessToken验证用户信息

验证成功

1、生成TOKEN【示例:ST-136-Tnw7BLEKurYGcDaZFgo6-cas01.example.org】

2、重定向到requestURL,此时requestURL中包含了ticket参数

http%3A%2F%2Flocalhost:8080%2Fsaiku%2FssoLogin&renew=true&other=form&accessToken=C45BD9AE005909FE2F9EC45D54FF70D2ADD106142B17461AEC94AD4A098A7420025D7694680916B5276CDDE8FA085C5A&ticket=ST-136-Tnw7BLEKurYGcDaZFgo6-cas01.example.org

验证失败,跳转到配置的loginFailureURL并提示具体错误信息

(4) 根据得到的ticket构造验证的 validURL 去CAS服务器验证这个TICKET是否合法

validateURL =

CAS_SERVER_URL/serviceValidate? + ticket参数 + serviceCode参数 + service参数

service参数是验证成功后重定向的URL地址

http://CAS_SERVER/ptyhzx-sso/serviceValidate?ticket=ST-136-Tnw7BLEKurYGcDaZFgo6-cas01.example.org&serverCode=101&service=http%3A%2F%2Flocalhost%3A8080%2Fsaiku%2FssoLogin%3Bjsessionid%3DD8A37907E4C3BF6D24CCD0568CDA7867

(6)验证成功后cas_server会返回xml报文

<!-- 成功时 -->
<cas:serviceResponse xmlns:cas=‘http://www.yale.edu/tp/cas‘>
    <cas:authenticationSuccess>
        <cas:user>a1</cas:user>
        <cas:attributes>
                <cas:id>1100000000000000000</cas:id>

                <cas:sex>1</cas:sex>

                <cas:username></cas:username>

                <cas:authenticationMethod>com.jeaw.sso.adaptors.jdbc.QueryDatabaseAuthenticationHandler</cas:authenticationMethod>

                <cas:email></cas:email>

                <cas:nickname>a1</cas:nickname>

                <cas:status>1</cas:status>

                <cas:cellphone></cas:cellphone>

                <cas:usertype>03</cas:usertype>

                <cas:loginid>1000000001</cas:loginid>

                <cas:password>111111</cas:password>

        </cas:attributes>
    </cas:authenticationSuccess>
</cas:serviceResponse>

<!-- 失败时 -->
<cas:serviceResponse xmlns:cas=‘http://www.yale.edu/tp/cas‘>
    <cas:authenticationFailure code=‘INVALID_TICKET‘>
        未能够识别出目标 'ST-136-Tnw7BLEKurYGcDaZFgo6-cas01.example.org'票根
    </cas:authenticationFailure>
</cas:serviceResponse>

(7) 解析该报文构造用户信息对象存于session,跳转到登陆成功页面

(8) 交互流程一览

时间: 2024-10-07 07:26:21

单点登录认证流程的相关文章

CAS单点登录详细流程

一.CAS简介和整体流程 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用系统提供一种可靠的单点登录方法,CAS 在 2004 年 12 月正式成为 JA-SIG 的一个项目.CAS 具有以下特点: [1]开源的企业级单点登录解决方案. [2]CAS Server 为需要独立部署的 Web 应用. [3]CAS Client 支持非常多的客户端(这里指单点登录系统中的各个 Web 应用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ru

基于CAS实现单点登录(SSO):CAS+LDAP实现单点登录认证

[一].概述 CAS是N个系统的中心认证入口,而贯穿多个系统的用户信息是共用的,应该被单独维护,而这些信息可能属于不用的系统,不用的组织,不用的国家,从而形成了树形结构,而使用关系型数据库维护树形结构信息是它的弱点,这就是本文CAS和LDAP整合的初衷. 本来主要详细是介绍CAS和LDAP整合实现单点登录的步骤. [二].详细步骤 1.LDAP安装配置 详见: 介绍openLDAP在windows上的安装配置 安装配置,添加部分测试数据如下: 2.CAS的基础安装配置: 见SSO之CAS单点登录

基于数字证书的二次登录认证流程

简介: 使用数字证书用来做二次登录认证是一种已经广泛使用的,能够有效保护用户账户的手段,即用户如果开启了数字证书保护,登录到应用系统时,不仅需要输入用户的账户和口令,还需要有这张证书配合才能登录,因此,即便用户的账户被盗去,在没有数字证书的情况下一样无法登录系统. 1.用户申请新证书流程: 场景1:用户登录YS,开启数字证书登录功能和新建证书申请. 2.用户使用数字证书登录流程(假设用户已开启数字证书). 3.删除证书流程: 4.关闭证书认证功能流程:

单点登录认证方案思路,求好思路回复

统一用户认证方案思路 实现目标: 1.实现单点登录,使用单点登录帐号登录后,可访问多个被授权的系统. 2.尽量不让用户进行客户端安装,有些技术如CAS,SAML,P3P欢迎点评 免登录访问方式可能存在:  1.当前系统界面连接其他系统的界面,(场景:多系统集成一个系统)  2.当前系统访问其他系统的有验证的服务接口, (场景: 访问被授权的系统的服务)  3.在新的浏览器标签页直接打开其他系统的页面 .(场景: 进入其他系统免登录) 2.增强安全验证性,采用 cookie,token,sessi

SSH登录认证流程

最近在工作中的某台客户端上ssh登录某服务器,结果出现如下信息: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!Someone could be eavesdropping on you r

wifi免密码登录认证流程

您查询的关键词是:weixin:,qrgex_zm- 以下是该网页在北京时间 2016年03月27日 02:46:42 的快照: 如果打开速度慢,可以尝试快速版:如果想保存快照,可以添加到搜藏:如果想更新或删除快照,可以投诉快照. 百度和网页 http://c.anywifi.com/wiki/user/auth.html 的作者无关,不对其内容负责.百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面. 帮助文档 登陆 快速入门 系统使用手册 模板制作手册 用户登陆接口 RESTful A

cas sso单点登录系列2:cas客户端和cas服务端交互原理动画图解,cas协议终极分析

转:http://blog.csdn.net/ae6623/article/details/8848107 1)PPT流程图:ppt下载:http://pan.baidu.com/s/1o7KIlom 一.用户第一次访问web1应用. ps:上图少画了一条线,那一条线,应该再返回来一条,然后再到server端,画少了一步...谢谢提醒.而且,重定向肯定是从浏览器过去的.我写的不严谨,画的比较通俗了...因该像下面这张图一样就ok了!!PPT自己下载下来修改吧,我就不改了. 二.用户第一次访问we

单点登录技术:微软Passport单点登录协议和自由联盟规范

随着互联网络应用的普及,越来越多的人开始使用互联网上提供的服务.然而目前提供服务的网站大多采用用户名.口令的方式来识别用户身份,这使得用户需要经常性的输入自己的用户名.口令.显然这种认证方式存在着弊端:随着用户网络身份的增多,用户相应的需要记忆多组用户名.口令,这给用户造成记忆上的负担:另外频繁的输入用户名.口令,会相应的增大用户的口令密码被破解的机率.为了改变这一现状,单点登录技术应运而生. 单点登录技术的核心思想是通过一定的方式使得各提供服务的网站之间建立某种联系,用户只需要在其中一个认证网

【No.2】CAS单点登录的原理分析

上一篇说了基于Cookie的单点登录的实现:http://blog.csdn.net/readiay/article/details/52814001,虽然他实现简单,但是也问题颇多.例如:用户名密码不停传送,增加了被盗号的可能.另外,不能跨域! 1.基于Cookie的单点登录的回顾 基于Cookie的单点登录核心原理: 将用户名密码加密之后存于Cookie中,之后访问网站时在过滤器(filter)中校验用户权限,如果没有权限则从Cookie中取出用户名密码进行登录,让用户从某种意义上觉得只登录