zoukankan      html  css  js  c++  java
  • cas单点登录原理

    什么是单点登录

    单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。

    SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    应用场景

    假设你正在腾讯网首页浏览某则新闻想收藏它

    你点击收藏按钮

    网站提示你需要登录

    你扫码或输入用户名密码登录

    浏览器跳转到你之前浏览的页面

    并提示你收藏成功

    看完新闻你突然发现勇士队的比赛要开了

    你可是勇士的忠实球迷

    买了勇士的vip

    此时你从浏览器打开腾讯体育

    跳转到页面

    你发现右上角你的会员专属图标在闪烁

    然后你打开比赛沉浸之中

    CAS单点登录

    CAS单点登录是单点登录的一种,它是基于Cookie实现的。

    重要概念

    Ticket Granting ticket (TGT:可以认为是CAS Server根据用户名密码生成的一张票,存在Server端

    Ticket-granting cookie (TGC) :其实就是一个Cookie,存放用户身份信息,由Server发给Client端

    Service ticket (ST:由TGT生成的一次性票据,用于验证,只能用一次。相当于Server发给Client一张票,然后Client拿着这个票再来找Server验证,看看是不是Server签发的。

    CAS单点登录时序图

     主要流程分析

    假设服务a与服务b存在单点登录

    ——————————————————————

    浏览器请求服务a的资源(第一次)  未携带也不存在任何认证信息

    服务a的后端的response将浏览器重定向到认证中心 携带跳转地址

    登录认证中心

    认证中心的response将浏览器重定向到第一次请求a资源的地址并附上ticket 携带CASTGC

    浏览器请求a资源的地址+ticket 

    服务a利用ticket到认证中心进行验证

    认证中心给服务a返回认证成功信息

    服务a给浏览器发送重定向response将浏览器重定向到第一次访问服务a的地址,并设置JSESSIONID

    浏览器请求服务a地址 携带JSESSIONID

    服务a验证session有效并返回请求资源

    ——————————————————————

    浏览器请求服务a的资源(第二次) 已存在JSESSIONID

    服务a验证session有效并返回请求资源

    ——————————————————————

    浏览器请求服务b的资源(第一次) 

    服务b的response将浏览器重定向到认证中心 携带跳转地址

    浏览器请求认证中心地址 携带CASTGC(访问服务a生成)

    认证中心发现有TGC(已认证),response将浏览器重定向到服务b 携带ticket

    浏览器请求服务b+ticket

    服务b利用ticket到认证中心进行验证

    认证中心给服务b返回认证成功信息

    服务a给浏览器发送重定向response将浏览器重定向到第一次访问服务b的地址,并设置JSESSIONID

    浏览器请求服务b地址 携带JSESSIONID

    服务b验证session有效并返回请求资源

  • 相关阅读:
    Objective-C 排序
    Objective-C 工厂方法
    Objective-C 关键字:retain, assgin, copy, readonly,atomic,nonatomic
    iOS UINavigationController的使用
    iOS UITabBarController的使用
    iOS UISearchController的使用
    iOS中延时执行的几种方式的比较和汇总
    iOS适配 旧项目工程在iOS9下不能正常显示
    iOS Block界面反向传值
    iOS Block简介
  • 原文地址:https://www.cnblogs.com/jugglee/p/10570201.html
Copyright © 2011-2022 走看看