0
点赞
收藏
分享

微信扫一扫

SSO单点登录源码解析

单点登录:用户在单点登录成功后,会访问某一平台模块,1. 向客户端发送一个请求(免密登录接口),请求客户端接口会携带一个ticket,类似于:http//:ip:port:xxx?ticket=xxxx

1. 这个请求会被客户端配置的EKPSSOCLIENT的过滤器拦截,读取配置文件sso-config.properties,获取过滤器链(CASURLFilter、UsernameCoverFilter、SSOLoginRedirectFilter)这三个子过滤器。

SSO单点登录源码解析_用户名

从session中获取username

SSO单点登录源码解析_单点登录_02

根据username和parameter初始化一个EKPSSOContext容器

SSO单点登录源码解析_客户端_03

初始化完成并创建EKPSSOChain对象,并跳转到配置的子过滤器

SSO单点登录源码解析_单点登录_04

跳转三个子过滤器的核心接口

SSO单点登录源码解析_客户端_05

第一个进入CASURLFilter过滤器,校验是否携带ticket票据。并校验url是否合法(是否加入白名单)。

SSO单点登录源码解析_单点登录_06

 校验票据是否合法,合法则从解析后的ticket中获取用户名。并将username用户名保存到context容器中

SSO单点登录源码解析_客户端_07

 进入第二个过滤器(UsernameCoverFilter)用户转换过滤器

SSO单点登录源码解析_客户端_08

 比照用户名是否被篡改(第一次和蓝凌握手)

SSO单点登录源码解析_客户端_09

 并将客户端的username和蓝凌的username分别存放到容器中

SSO单点登录源码解析_客户端_10

 进入第三个过滤器(LoginSSORedirectFilter)

由于我们是单向的单点(这个过滤器和我们关系不大)

作用:校验是否登录,没有登录则调整到SSO的登录页面。、

第二次和SSO系统握手,再次校验双方信息是否对等。

SSO单点登录源码解析_单点登录_11

再次将用户名保存到容器中

至此SSO单点登录(基于ticket方式)校验完成,进去我们的免密登录接口。免密登录成功后则完整的单点登录完成。

举报

相关推荐

0 条评论