欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sso初探cas

程序员文章站 2022-05-05 11:34:33
...

概念

sso:single sign on

多个系统中,登录单个系统,可访问其他互相信任系统

问题点:

1、产生存储信任凭据

2、验证凭据

方案

同域:浏览器种cookie,服务器common session(redis、mysql)

不同域:

cas

sso初探cas

1、用户没登录,直接302

2、重定向到cas server,但是没登录,展示登录页面

3、验证成功,种下cas server域名cookie TGC,重定向原始请求地址,添加server ticket参数

4、cas client向cas server 请求校验st

5、cas server 确认st有效

6、浏览器重定向到原始请求,app 域名下种下jessionid的cookie

7、浏览器访问,校验jessionid

8、用户再次访问,携带jessionid,校验通过

9、用户对app2发起请求,重定向到cas server

10、cas server域名已经有tgc,重定向原始地址,添加server ticket参数

11、cas client向cas server 请求校验st

12、cas server 确认st有效

13、浏览器重定向到原始请求,app 域名下种下jessionid的cookie

14、浏览器访问,校验jessionid

总结:

1、cas server 统一管理,充当session共享池;

2、tgt表示cas校验成功;jessionid表示app自己校验没问题

sso代码分析

1、自用spring boot注解,自动注入相关filter

FilterRegistrationBean:注册filter

FilterFactoryBean:生产filter的工厂,单例模式

public class FilterFactoryBean implements FactoryBean, BeanPostProcessor


    @Override
    public boolean isSingleton() {
        return true;
    }

 

2、用户信息的存与取

存:通过filter,获取用户信息(去sso服务器上拿,应该是存squirrel里了),放到ThreadLocal里;

取:从ThreadLocal里取来用

相关标签: 随笔 sso java