首页 > 其他分享 >SSO单点登录逻辑

SSO单点登录逻辑

时间:2024-04-09 14:12:27浏览次数:28  
标签:单点 登录 验证 系统 用户 SSO 应用

网站的单点登录(Single Sign-On, SSO)逻辑旨在实现用户只需在一个地方进行一次身份验证,就能访问多个相互信任的应用系统或网站,无需在每个系统上单独登录。以下是单点登录的基本逻辑流程:

1. 用户访问受保护资源
用户尝试访问某个集成到SSO体系中的应用(如应用A)。应用A检测到用户未登录,于是重定向用户到SSO系统(通常是中央认证服务,如CAS、OAuth服务器、OpenID Connect提供者等)的登录页面。

2. 用户身份验证
用户在SSO系统的登录页面输入其凭据(如用户名和密码)。SSO系统通过验证这些凭据来确认用户的身份。这一步可能涉及与后端用户目录(如LDAP、AD)的交互,或者使用本地用户数据库进行验证。

3. 生成和传递身份凭证
一旦用户身份得到验证,SSO系统将生成一个代表该用户已通过验证的身份凭证。这个凭证通常采用以下形式之一:

Session Cookie:SSO系统在用户的浏览器上设置一个安全的HTTP-only cookie,用于标识已登录用户。后续对受保护应用的请求会自动携带此cookie,从而实现无感知的身份验证。

Token(如JWT):SSO系统发放一个经过签名的JSON Web Token(JWT)或其他类型的访问令牌给用户浏览器。用户浏览器在访问其他应用时,需将此令牌附在请求头中,供应用验证。

4. 用户重定向回原始应用
验证成功后,SSO系统将用户重定向回最初试图访问的应用A,并在重定向过程中(通常是查询参数或通过POST请求)传递必要的身份凭证信息(如token或一个表明身份已验证的票据)。应用A收到这些信息后,开始执行以下操作:

验证凭证:应用A与SSO系统通信(如有必要),验证接收到的身份凭证的有效性。这可能包括检查JWT签名、查询SSO系统的验证接口,或验证传递回来的票据。

建立本地会话:验证成功后,应用A在自己的会话管理系统中为用户创建一个新的会话,关联用户的账户信息。此时,用户在应用A中被视为已登录。

5. 访问其他受保护应用
用户在不退出的情况下访问另一个集成到SSO体系的应用B。应用B检测到用户未登录,同样重定向用户到SSO系统。由于用户浏览器上已经存在SSO系统设置的session cookie或持有有效的token:

SSO系统识别已登录状态:SSO系统通过检测浏览器上的cookie或接收到的token,识别出用户已通过验证,无需再次输入凭据。

SSO系统直接重定向回应用B:基于此识别,SSO系统立即重定向用户回应用B,并传递必要的身份凭证。应用B执行与应用A相同的验证和会话建立过程,用户无需再次登录即可访问应用B的内容。

6. 登出操作
当用户在任何一个应用中选择登出时,该应用会通知SSO系统注销用户会话。SSO系统清除用户的session cookie或使持有的token失效,并可能触发一个登出通知,通知所有相关应用清除各自的本地会话。这样,用户在所有集成SSO的系统中均被视为已登出,实现了单点登出(Single Logout, SLO)。

总结来说,单点登录逻辑的核心在于利用一个统一的认证中心来集中处理用户身份验证,通过安全的凭证传递机制(如cookies或tokens)以及重定向流程,使得用户能够在多个互信应用之间无缝切换,无需多次登录。
1:有3个应用 如:A淘宝,B小米之家,C华为, 第3方权威机构开发的 D: sso体系 (已经集成了A,B,C应用)

2:用户想要在A,B,C 3个系统之间随意登录,首先得有A,B,C,D 对应的账号密码,就是有认证注册过
 一个用户想登录A系统,应该是点击A系统的SSO标识(才会采用该方案,去D sso体系,输入账号和密码)
3:成功登录D认证系统后 会带上对应的token,和 D sso登录中心自己的用户id 如10011, 在A系统中查询是否有绑定用户id 10011,如果有就查到对应的A系统用户账号密码生成 A应用的登录流程,
如果没有绑定就要输入 A系统的 账号密码(账号密码或者手机或者邮箱等方式,看该应用自己的登录逻辑)和id 10011来绑定 4:绑定成功既可以打开A应用了,其他B,C应用一样的逻辑处理

 

标签:单点,登录,验证,系统,用户,SSO,应用
From: https://www.cnblogs.com/Fengge518/p/18123855

相关文章

  • CentOS7设置ssh本机免密登录
    点击查看代码登出Connectiontoclone1closed.[[email protected]]#ll总用量16-rw-rw-r--.1rootroot3934月909:23authorized_keys-rw-------.1rootroot16794月719:16id_rsa-rw-r--r--.1rootroot3934月719:16id_rsa.pub-rw-r--r--.1r......
  • plawright过抖音手机号登录验证
    importhttpximportrandomimportasyncioimportddddocrfromPILimportImagefromioimportBytesIOfromloguruimportloggerfromplaywright.async_apiimportPage,Response,async_playwrightclassAwemeBrowser:def__init__(self,session:str,h......
  • 贝叶斯分位数回归、lasso和自适应lasso贝叶斯分位数回归分析免疫球蛋白、前列腺癌数据
    原文链接:http://tecdat.cn/?p=22702最近我们被客户要求撰写关于贝叶斯分位数回归的研究报告,包括一些图形和统计输出。贝叶斯回归分位数在最近的文献中受到广泛关注,本文实现了贝叶斯系数估计和回归分位数(RQ)中的变量选择,带有lasso和自适应lasso惩罚的贝叶斯摘要还包括总结结果、......
  • 「Mac」gitlab 更新了登录密码后,本地git仓库拉取推送等无法操作,提示无权限了 —— 解
    ​起因:公司git账户与oa账号关联,oa密码修改了,导致git远程密码修改了,本地的项目再做拉取推送时发现拉取不下来了解决办法:1、查看本地git配置cat.gitconfig2、删除git本地信息nano.gitconfig3、Mac应用程序钥匙串访问,找到对应git项,将其删除4、重新配置一下git邮箱、用......
  • H3C S3600 交换机配置SSH登录
    S3600这款交换机比较旧了,版本为V3生成服务器端的RSA和DSA密钥对时完成SSH登录的必要操作#生成RSA和DSA密钥对。[Switch]public-keylocalcreatersa[Switch]public-keylocalcreatedsa#设置用户接口上的认证模式为AAA认证。[Switch]user-interfacevty04[Switch-......
  • 解决JIRA、Confluence自动注销登录的问题
    转载:https://blog.csdn.net/qq_35002542/article/details/127691457 当工作从从JIRA里面打开confluence的链接时候,在回到JIRA时候,就自动退出了,还是需要账号密码登录,很烦,于是研究如何解决。 百度了几十次,并没有什么卵用,于是从去看官方,在搜索了n个界面后,终于找到方法了。原......
  • Lasso回归及其R语言操作
    Lasso回归形式:确定lamda使得RSS-lamda*sum(Bi)最小,RSS为普通最小二乘估计的回归平方和。 作用:确定哪些变量更重要,lamda从0到1过程中,哪些变量的系数最慢趋于0,则这些变量相对更重要。 R语言代码:library(glmnet)set.seed(1)x=matrix(rnorm(100*20),100,20)y=rnorm(100)fit1=......
  • 设置ssh免密登录
    点击查看代码[root@master~]#cd~/.ssh[[email protected]]#ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/root/.ssh/id_rsa):Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Yourid......
  • LCD显示驱动/低功耗液晶段码屏驱动芯片VKL144D SSOP48 原厂技术支持
    产品品牌:永嘉微电/VINKA产品型号:VKL144D封装形式:SSOP48概述VKL144D是一个点阵式存储映射的LCD驱动器,可支持最大144点(36SEGx4COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,可配置4种功耗模式,也可通过关显示和关振荡器进入省电模式。其高抗干扰,低功耗的特性适用......
  • vuejs3.0 从入门到精通——网页图形绘制:登录页面
    网页图形绘制:登录页面安全升级,JS动态生成图片验证码功能一、实验目标掌握Canvas的基本用法。掌握使用Canvas绘制文本的方法。掌握使用Canvas绘制线段的方法。掌握使用Canvas导出图片的方法。掌握JS的基本语法和程序结构。掌握JS函数的定义和应用。掌握JS数......