CAS服务工作流程

2023-02-25 16:24:20 浏览数 (1)

CAS时序图

image.png

具体流程:

1.用户访问app系统,app系统是需要登录的,但用户现在没有登录。 2.跳转到CAS server,即SSO登录系统,后续图中的CAS Server统一叫做SSO系统。SSO系统也没有登录,弹出用户登录页。 3.用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。 4.SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。 5.app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。 6.验证通过后,app系统将登录状态写入session并设置app域下的Cookie。 至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。

访问app2系统时的流程:

1.用户访问app2系统,app2系统没有登录,跳转到SSO。 2.由于SSO已经登录了,不需要重新登录认证。 3.SSO生成ST,浏览器跳转到app2系统,并将ST作为参数传递给app2。 4.app2拿到ST,后台访问SSO,验证ST是否有效。 5.验证成功后,app2将登录状态写入session,并在app2域下写入Cookie。 这样,app2系统不需要走登录流程,就已经是登录了。SSO,app和app2在不同的域,它们之间的session不共享也是没问题的。

CAS登录认证方式
1.JDBC认证

CAS Server可以直接访问数据库,通过一定的配置,直接进行用户名和密码的校验。

2. REST认证

2.1什么是Rest认证?

cas服务端通过调用其他服务接口,将用户名和密码传过去进行认证。这就是rest认证。

2.2什么情况下需要用到Rest认证?

在不允许cas服务直接访问账号数据库的时候,这个时候就需要用到Rest认证。

2.3具体参考官网

https://apereo.github.io/cas/5.3.x/installation/Rest-Authentication.html

2.4流程介绍

当用户点击登录后,cas会发送post请求到http://rest.cas.com:8083/login并且把用户信息以"用户名:密码"进行Base64编码放在authorization请求头中。

若输入用户名密码为:admin/123456;那么请求头包括:

authorization=Basic Base64(admin MD5(123456))

那么发送后客户端必须响应一下数据,cas明确规定如下:

代码语言:javascript复制
● cas 服务端会通过post请求,并且把用户信息以”用户名:密码”进行Base64编码放在authorization请求头中

● 200状态码:并且格式为

{“@class”:”org.apereo.cas.authentication.principal.SimplePrincipal”,”id”:”casuser”,”attributes”:{}}是成功的

● 403状态码:用户不可用

● 404状态码:账号不存在

● 423状态码:账户被锁定

● 428状态码:过期

● 其他登录失败

0 人点赞