最近看了下一些认证授权相关的文章,发现有很多东西:认证,授权,cas,sso,oauth,OIDC等等,看了好几天还是有一些疑惑。主要集中在下面几个问题:
跨域的单点登陆,比如:a.com
与c.com
,这两个应用都是前后端分离的。
cas与一些sso文章的解释是,需要有一个sso.com
认证页面。登陆a.com
时首先需要需要跳转到sso.com?redirect=a.com
,然后完成sso.com
的认证登陆(访问sso.com
的后端接口进行认证),登陆完成之后将sso.com
的认证信息保存。现在已经sso.com
已经认证通过了,然后再申请一个a.com
的凭证,然后跳转回a.com?token=凭证
。然后a.com
再请求a.com
的后端服务获取a.com
的认证凭证(后端服务访问sso.com
的后端服务校验),至此a.com
就完成了认证。
主要有以下几个问题:
- 按照这个逻辑,实际上
sso
,a
,b
总共那就是三个web应用,三个后端应用? - 如果是确实是前一个问题描述的,那就是还是需要每一个应用自己处理
session
的保存,只不过a
,b
是受sso
控制的? - 加载
a
应用开始,怎么检测用户登陆状态?先检测应用自身的token(过期,进行刷新,刷新不通过),不通过然后再跳转sso
页面?根据sso
的状态决定a
应用的状态?
回答:
a,b
两个网站本来就应该是单独应用,sso
这个应用就是专门用来做登录的