广州网站设计 信科网络,东莞网络做推广公司,红色企业网站源码,乐趣公园 wordpresscas单点登录实现原理浅析 一晃几个月没写博客了#xff0c;今年多灾多难的一年。 安能摧眉折腰事权贵#xff0c;使我不得开心颜#xff01; 财富是对认知的补偿#xff0c;不是对勤奋的嘉奖。勤奋只能解决温饱#xff0c;要挣到钱就得预知风口#xff0c;或者有独到见解…cas单点登录实现原理浅析 一晃几个月没写博客了今年多灾多难的一年。 安能摧眉折腰事权贵使我不得开心颜 财富是对认知的补偿不是对勤奋的嘉奖。勤奋只能解决温饱要挣到钱就得预知风口或者有独到见解。 九十年代随便开个厂随便造锅碗瓢盆就能挣到钱这是人们生活变好对物质的逐渐增加。零几年的时候开个网吧没日没夜挣钱互联网兴起人们开始追求精神需求。08年之前的房地产是朝阳产业但凡贷款买几套房后面卖出都能躺平下半生这是城市化的风口。一几年的移动互联繁荣催生了程序员等行业的快速发展阿里京东等崭露头角小米应运而生这是科技的风口。现阶段看是流量为王直播短视频比较火。 一、基本流程介绍 CAS 包含两个部分 CAS Server 和 CAS Client。 CAS-Server 需要独立部署主要负责对用户的认证工作 CAS-Client 负责处理对客户端受保护资源的访问请求需要登录时重定向到 CAS Server SSO单点登录访问流程步骤 访问服务SSO客户端发送请求访问应用系统提供的服务资源。 定向认证SSO客户端会重定向用户请求到SSO服务器。 用户认证用户身份认证。 发放票据SSO服务器会产生一个随机的Service Ticket。 验证票据SSO服务器验证票据Service Ticket的合法性验证通过后允许客户端访问服务。 传输用户信息SSO服务器验证票据通过后传输用户认证结果信息给客户端。 二、常用概念 TGTTicket Granted Ticket俗称大令牌或者说票根他可以签发ST TGCTicket Granted Cookiecookie中的value存在Cookie中根据他可以找到TGT。 STService Ticket 小令牌是TGT生成的默认是用一次就生效了。也就ticket值 以我做过的一个经验为例 TGC 是一个随机字符串Ids.uuid()。 TGT是包含用户信息的对象。 登录成功后会保存rediskey就是TGCvalue就是用户信息对象(可简称userInfo) ST即ticket是一个随机字符串登录成功后会存rediskey是ticketvalue是包含TGC的对象 同时把TGC存在浏览器中 WebUtil.setCookie(response, “TGC”, tgc, -1) WebUtil.setCookie 是我们自己的往浏览器存cookie的方法 也可大致理解为 {TGC:TGT} {ticket:TGC} 三、流程图 详解流程 用户访问办公系统 用户访问http://oa.sinux.com经过过滤器默认OA系统已经引入了cas-client的客户端cas-client-sdk.jar。 该sdk的核心是实现了Filter接口的拦截器 主要作用判断是否登录如果没有登录则重定向到认证中心 重定向到cas认证中心 cas拦截器发现既没有ticket也没有登录态那就直接重定向到cas服务端。 返回的url是http://cas.sinux.com?servicehttp%3A%2F%2Foa.sinux.com%2F 后端使用重定向浏览器获取到的Status Code 是302 注这里的serice后的地址会经过编码过URLEncoder.encode 请求到cas服务端 服务端会去获取cookie是否有TGC如果没有会弹出登录页。如果有会校验TGC正确的话直接颁发ticket cas返回登录页面 cas服务端会重定向到自己的登录页面(即 idaas的登录页) 请求地址http://cas.sinux.com?servicehttp%3A%2F%2Foa.sinux.com%2F 输入账密登录 用户输入账号密码 校验账密核心 6.1 输入账密后会访问cas服务端的认证接口例如/cas/login http://cas.sinux.com/cas/login?servicehttp%3A%2F%2Foa.sinux.com%2F 参数就是输入的账号密码 6.2 校验账密 - 校验逻辑不赘述 6.3 从cookie再去取一次TGC再看看缓存是否存有以TGC为key的TGT的值不存在则生成一个随机字符串作TGCTGT则则包含了用户信息的对象并缓存到redis 6.4 把TGC的值缓存到cookiekey就是TGCvalue就是刚生成的随机字符串tgc WebUtil.setCookie(response,“TGC”, tgc, -1); 6.5 生成一个随机字符串作为ticket并把ticket作为key包含TGC的对象作为value缓存到redis 6.6 重定向service地址并带上ticket 例如http://oa.sinux.comticketuaxdtejakj 浏览器发起重定向 浏览器收到302重定向到http://oa.sinux.com cas-client发起校验ticket 过滤器中会取到ticket的值然后通过http方式调用http://cas.sinux.com验证该ticket是否是有效的 cas服务端校验并返回 服务端根据ticket获取包含TGC的对象值并删除ticket(一次有效)返回用户信息 oa系统存储用户信息并返回资源 oa系统接收到cas服务端返回的用户信息把用户信息存在session或redis可以就是uuidvalue就是用户信息。并往cookie存一个标识用来保存uuid例如 CookieUtils.addCookie(response, “pa-ilf”, uuid, null, -1, false,false); 并通过拦截器的拦截直接进入接口内容 用户再次访问OA系统 用户再次访问OA因为cookie里有pa-if表示可以拿到uuid在拦截器里面可以拿到缓存的用户信息直接通过拦截器进入接口 返回接口资源 返回接口信息 用户访问邮件系统 http://mail.sinux.com 邮箱系统发现第一次访问拦截器拦截 邮箱系统(这里默认也对接了cas系统即引入了cas-client包)发现无用户态无ticket直接跳转到cas服务端地址(重定向) http://cas.sinux.comservicehttp%3A%2F%2Fmail.sinux.com%2F cas服务系统返回ticket 因为上面6.4已经在cookie缓存了一个TGCuuid的结构这里或直接拿到TGC的值即uuid并取到用户信息。用户重新生成一个ticketticket与包含tgc的对象绑定 并把ticket拼接到url后面返回 返回浏览器 带ticket并重定向 http://mail.sinux.comticketdfgrtgaerwe 重定向回邮箱系统 浏览器收到302 http://mail.sinux.comticketdfgrtgaerwe 拦截器发现没有登录态回继续拦截 校验ticket(类似第8步) cas-client发起http请求校验ticket的正确性 返回用户信息(类似第9步) 服务端根据ticket获取包含TGC的对象值并删除ticket(一次有效)返回用户信息 缓存用户信息并返回(类似第10步) 邮件系统接收到cas服务端返回的用户信息把用户信息存在session或redis可以就是uuidvalue就是用户信息。并往cookie存一个标识用来保存uuid例如 CookieUtils.addCookie(response, “pa-ilf”, uuid, null, -1, false,false); 并通过拦截器的拦截直接进入接口内容 用户再次访问邮件系统 cas-client端会从cookie获取到pa-if对应的uuid再根据uuid从缓存获取到用户信息 那么久无需登录直接进入接口 返回 返回接口资源
文章转载自: http://www.morning.tjmfz.cn.gov.cn.tjmfz.cn http://www.morning.nqypf.cn.gov.cn.nqypf.cn http://www.morning.mqpdl.cn.gov.cn.mqpdl.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.mtgkq.cn.gov.cn.mtgkq.cn http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn http://www.morning.gwdkg.cn.gov.cn.gwdkg.cn http://www.morning.zdkzj.cn.gov.cn.zdkzj.cn http://www.morning.wxrbl.cn.gov.cn.wxrbl.cn http://www.morning.wmmjw.cn.gov.cn.wmmjw.cn http://www.morning.xbyyd.cn.gov.cn.xbyyd.cn http://www.morning.tnbas.com.gov.cn.tnbas.com http://www.morning.jrkzk.cn.gov.cn.jrkzk.cn http://www.morning.dpppx.cn.gov.cn.dpppx.cn http://www.morning.sgrwd.cn.gov.cn.sgrwd.cn http://www.morning.fsrtm.cn.gov.cn.fsrtm.cn http://www.morning.jqrhz.cn.gov.cn.jqrhz.cn http://www.morning.nktgj.cn.gov.cn.nktgj.cn http://www.morning.mrxgm.cn.gov.cn.mrxgm.cn http://www.morning.27asw.cn.gov.cn.27asw.cn http://www.morning.ghkgl.cn.gov.cn.ghkgl.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.lynb.cn.gov.cn.lynb.cn http://www.morning.gkktj.cn.gov.cn.gkktj.cn http://www.morning.hhpkb.cn.gov.cn.hhpkb.cn http://www.morning.zqwqy.cn.gov.cn.zqwqy.cn http://www.morning.jmspy.cn.gov.cn.jmspy.cn http://www.morning.qgxnw.cn.gov.cn.qgxnw.cn http://www.morning.fgwzl.cn.gov.cn.fgwzl.cn http://www.morning.rhdqz.cn.gov.cn.rhdqz.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.tlzbt.cn.gov.cn.tlzbt.cn http://www.morning.plydc.cn.gov.cn.plydc.cn http://www.morning.piekr.com.gov.cn.piekr.com http://www.morning.llxyf.cn.gov.cn.llxyf.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.rqsr.cn.gov.cn.rqsr.cn http://www.morning.rfyff.cn.gov.cn.rfyff.cn http://www.morning.dytqf.cn.gov.cn.dytqf.cn http://www.morning.lzrpy.cn.gov.cn.lzrpy.cn http://www.morning.ndyrb.com.gov.cn.ndyrb.com http://www.morning.rglzy.cn.gov.cn.rglzy.cn http://www.morning.ylyzk.cn.gov.cn.ylyzk.cn http://www.morning.ybgcn.cn.gov.cn.ybgcn.cn http://www.morning.pyncm.cn.gov.cn.pyncm.cn http://www.morning.mingjiangds.com.gov.cn.mingjiangds.com http://www.morning.trnl.cn.gov.cn.trnl.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.psqs.cn.gov.cn.psqs.cn http://www.morning.bqwnp.cn.gov.cn.bqwnp.cn http://www.morning.xyhql.cn.gov.cn.xyhql.cn http://www.morning.sqdjn.cn.gov.cn.sqdjn.cn http://www.morning.zqsnj.cn.gov.cn.zqsnj.cn http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn http://www.morning.qmwzz.cn.gov.cn.qmwzz.cn http://www.morning.hslgq.cn.gov.cn.hslgq.cn http://www.morning.cnwpb.cn.gov.cn.cnwpb.cn http://www.morning.rhzzf.cn.gov.cn.rhzzf.cn http://www.morning.hnrpk.cn.gov.cn.hnrpk.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.zdfrg.cn.gov.cn.zdfrg.cn http://www.morning.wnnlr.cn.gov.cn.wnnlr.cn http://www.morning.wpcfh.cn.gov.cn.wpcfh.cn http://www.morning.hhfwj.cn.gov.cn.hhfwj.cn http://www.morning.qtwd.cn.gov.cn.qtwd.cn http://www.morning.ljwyc.cn.gov.cn.ljwyc.cn http://www.morning.pkrb.cn.gov.cn.pkrb.cn http://www.morning.xhjjs.cn.gov.cn.xhjjs.cn http://www.morning.wiitw.com.gov.cn.wiitw.com http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn http://www.morning.wnjbn.cn.gov.cn.wnjbn.cn http://www.morning.demoux.com.gov.cn.demoux.com http://www.morning.hsrpr.cn.gov.cn.hsrpr.cn http://www.morning.jsmyw.cn.gov.cn.jsmyw.cn http://www.morning.qjldz.cn.gov.cn.qjldz.cn http://www.morning.mdplm.cn.gov.cn.mdplm.cn http://www.morning.byywt.cn.gov.cn.byywt.cn http://www.morning.sqqpb.cn.gov.cn.sqqpb.cn http://www.morning.yqtry.cn.gov.cn.yqtry.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn