Skip to content

sso单点登录流程 #20

@deligent-ant

Description

@deligent-ant

sso单点登录流程

具体源码没有详细去看,走了个大概的流程。并找了一个图片来描述一下。

背景关键字:http是无状态协议 会话机制 cookie与session web多系统

背景关键字,不做介绍,只说sso。

往常一个网站就要登陆一次,同一用户再次登陆另一个网站还得再次登陆,也就是不用的网站在保留
session和cookie是各自独立的。既做session的创立也做用户登陆的校验。但如果这几个网站是同一个登
陆呢,比如公司好几个网站,你只要登陆一次sso认证,就可以访问各个页面。所以sso就是为了实现web
多系统下的登陆认证,多系统都接入同一个的sso认证,用户只要登陆过一次,就可以访问接入这个认证
的任何一个系统,不用重复登陆认证。
sso流程

sso

  1. 用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  2. sso认证中心发现用户未登录,将用户引导至登录页面
  3. 用户输入用户名密码提交登录申请
  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌
  5. sso认证中心带着令牌跳转会最初的请求地址(系统1)
  6. 系统1拿到令牌,去sso认证中心校验令牌是否有效
  7. sso认证中心校验令牌,返回有效,注册系统1
  8. 系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源
  9. 用户访问系统2的受保护资源
  10. 系统2发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数
  11. sso认证中心发现用户已登录,跳转回系统2的地址,并附上令牌
  12. 系统2拿到令牌,去sso认证中心校验令牌是否有效
  13. sso认证中心校验令牌,返回有效,注册系统2
  14. 系统2使用该令牌创建与用户的局部会话,返回受保护资源

  用户登录成功之后,会与sso认证中心及各个子系统建立会话,用户与sso认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过sso认证中心,全局会话与局部会话有如下约束关系

  • 局部会话存在,全局会话一定存在
  • 全局会话存在,局部会话不一定存在
  • 全局会话销毁,局部会话必须销毁
基于nuxt的sso认证:
  • 项目入口app.register
  • nuxt.config:severMiddleware,中间件:
  • midleware下的auth:利用middle的第一参数context的req和store把用户信息放入store
    具体看源码

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions