关于单点登陆的一些问题?

最近看了下一些认证授权相关的文章,发现有很多东西:认证,授权,cas,sso,oauth,OIDC等等,看了好几天还是有一些疑惑。主要集中在下面几个问题:

跨域的单点登陆,比如:a.comc.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就完成了认证。

主要有以下几个问题:

  1. 按照这个逻辑,实际上ssoab总共那就是三个web应用,三个后端应用?
  2. 如果是确实是前一个问题描述的,那就是还是需要每一个应用自己处理session的保存,只不过ab是受sso控制的?
  3. 加载a应用开始,怎么检测用户登陆状态?先检测应用自身的token(过期,进行刷新,刷新不通过),不通过然后再跳转sso页面?根据sso的状态决定a应用的状态?
阅读 1.4k
2 个回答

回答:

  1. 是三个应用,a,b两个网站本来就应该是单独应用,sso这个应用就是专门用来做登录的
  2. 每个应用都应该有自己的session,sso只管登录,他的session里只有用户信息。如果都用sso的session,万一要加点业务信息,就不好搞了。
  3. 你说的完全ok,a先看自己应用的状态,不通过再跳sso,sso再检查自己的,如果没过期就不用重新登录了,带token回a网站,否则就需要重新登录。
  1. sso, a, b是三个单独的应用,每次请求后端接口都需要带token到后端验证。
  2. 前端token保存在cookie里面,后端保存在redis里面。第三点是你说的那样。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题