前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >单点登录(SSO)及实现方案

单点登录(SSO)及实现方案

作者头像
木子星兮
发布2022-11-11 14:06:45
7670
发布2022-11-11 14:06:45
举报
文章被收录于专栏:前端小码农前端小码农

单点登录

单点登录:Single Sign On,简称SSO。用户只要登录一次,就可以访问所有相关信任应用的资源。企业里面用的会比较多,有很多内网平台,但是只要在一个系统登录就可以。

实现方案

  • 单一域名:可以把 cookie 种在根域名下实现单点登录
  • 多域名:常用 CAS来解决,新增一个认证中心的服务。CAS(Central Authentication Service)是实现SSO单点登录的框架

CAS实现单点登录的流程:

  1. 用户访问系统A,判断未登录,则直接跳到认证中心页面
  2. 在认证中心页面输入账号,密码,生成令牌,重定向到 系统A
  3. 在系统A拿到令牌到认证中心去认证,认证通过,则建立对话
  4. 用户访问系统B,发现没有有效会话,则重定向到认证中心
  5. 认证中心发现有全局会话,新建令牌,重定向到系统B
  6. 在系统B使用令牌去认证中心验证,验证成功后,建议系统B的局部会话。

具体的可以下面的文章,讲解的很详细

  • CAS实现单点登录SSO执行原理探究(终于明白了)
  • 一张图看明白CAS单点登录原理

关键点

下面是举例来详细说明CAS实现单点登录的流程:

一、第一次访问系统A

  1. 用户访问系统A (www.app1.com),跳转认证中心 client(www.sso.com),然后输入用户名,密码登录,然后认证中心 serverSSO 把 cookieSSO 种在认证中心的域名下 (www.sso.com),重定向到系统A,并且带上生成的 ticket 参数 (www.app1.com?ticket =xxx)
  2. 系统A (www.app1.com?ticket =xxx)请求系统A的后端 serverA ,serverA 去 serverSSO 验证,通过后,将cookieA种在 www.app1.com下

二、第二次访问系统A 直接携带 cookieA 去访问后端,验证通过后,即登录成功。

三、第三次访问系统B

  1. 访问系统B (www.app2.com),跳转到认证中心 client(www.sso.com),这个时候会把认证中心的cookieSSO也携带上,发现用户已登录过,则直接重定向到系统B(www.app2.com),并且带上生成的ticket参数(www.app2.com?ticket =xxx)
  2. 系统B (www.app2.com?ticket =xxx)请求系统B的后端 serverB,serverB 去 serverSSO 验证,通过后,将cookieB种在www.app2.com下

注意cookie生成时机及种的位置。

  • cookieSSO,SSO域名下的cookie
  • cookieA,系统A域名下的cookie
  • cookieB,系统B域名下的cookie
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 牧码的星星 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单点登录
  • 实现方案
  • CAS实现单点登录的流程:
    • 关键点
    相关产品与服务
    访问管理
    访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档