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

SSO单点登录

时间:2024-11-15 21:07:17浏览次数:1  
标签:单点 登录 微信 认证 SSO com

SSO 单点登录方式

   一、SSO 单点登录

   单点登录(Single Sign-On)是指在同一帐号平台下的多个应用系统中,用户只需登录一次,即可访问所有相互信任的应用系统。本质就是在多个应用系统中共享登录状态。举例来说,百度贴吧和百度地图是百度公司旗下的两个不同的应用系统,如果用户在百度贴吧登录过之后,当他访问百度地图时无需再次登录,那么就说明百度贴吧和百度地图之间实现了单点登录。

   2. SSO 机制实现流程

   用户首次访问时,需要在认证中心登录:

 

   

   1)用户访问网站 a.com 下的 pageA 页面。

   2)由于没有登录,则会重定向到认证中心,并带上回调地址 www.sso.com?return_uri=a.com/pageA,以便登录后直接进入对应页面。

   3)用户在认证中心输入账号密码,提交登录。

   4)认证中心验证账号密码有效,然后重定向 a.com?ticket=123 带上授权码 ticket,并将认证中心 sso.com 的登录态写入 Cookie。

   5)在 a.com 服务器中,拿着 ticket 向认证中心确认,授权码 ticket 真实有效。

   6)验证成功后,服务器将登录信息写入 Cookie(此时客户端有 2 个 Cookie 分别存有 a.com 和 sso.com 的登录态)。

   认证中心登录完成之后,继续访问 a.com 下的其他页面:

     

   这个时候,由于 a.com 存在已登录的 Cookie 信息,所以服务器端直接认证成功。

   如果认证中心登录完成之后,访问 b.com 下的页面:

    这个时候,由于认证中心存在之前登录过的 Cookie,所以也不用再次输入账号密码,直接返回第 4 步,下发 ticket 给 b.com 即可。

    说明:上面提到的授权码ticket ,可以采用 JWT 或 sessionId 的方式,二者都可以作为授权凭证进行传递和验证。具体选择哪种方式,取决于系统的设计需求、复杂性以及扩展性考虑。

   二、OAuth2.0 第三方登录

   OAuth 2.0 是 OAuth 1.0 的一个升级版本,并在安全性、灵活性和使用便利性上做了大量的改进。

   OAuth 第三方登录方式通常使用以下三种方式:

   OAuth 机制实现流程

   这里以微信开放平台的接入流程为例:

 

   1)首先,a.com 的运营者需要在微信开放平台注册账号,并向微信申请使用微信登录功能。

   2)申请成功后,得到申请的 appid、appsecret。

   3)用户在 a.com 上选择使用微信登录。

   4)这时会跳转微信的 OAuth 授权登录,并带上 a.com 的回调地址。

   5)用户输入微信账号和密码,登录成功后,需要选择具体的授权范围,如:授权用户的头像、昵称等。

   6)授权之后,微信会根据拉起 a.com?code=123 ,这时带上了一个临时票据 code。

   7)获取 code 之后, a.com 会拿着 code 、appid、appsecret,向微信服务器申请 token,验证成功后,微信会下发一个 token。

   8)有了 token 之后, a.com 就可以凭借 token 拿到对应的微信用户头像,用户昵称等信息了。

   9)a.com 提示用户登录成功,并将登录状态写入 Cookie,以作为后续访问的凭证。

   其他平台的接入方式可以去对应得官方文档查看,流程基本类似。

   三、SSO单点登录与OAuth2.0 登录的区别

   1.  OAuth2.0 登录主要关注授权,让第三方应用能够代表用户访问其资源。

   2. 单点登录(SSO)主要关注 身份认证,允许用户在多个系统中只登录一次。

   3. OAuth2.0 可以实现单点登录

   OAuth2.0可以作为单点登录的一种实现方式。OAuth2.0 是一种授权框架,但它的认证过程(Authorization Code Grant 流程)也可以用来实现 SSO。当你在一个系统中登录后,OAuth2.0 可以作为身份验证的手段,在多个应用之间共享用户的登录状态。

 

   参考链接:

   https://juejin.cn/post/6933115003327217671

标签:单点,登录,微信,认证,SSO,com
From: https://www.cnblogs.com/hld123/p/18548655

相关文章

  • Axios 拦截器示例(JWT 登录与自动刷新)
    1.安装axios首先,确保你已经安装了axios:npminstallaxios2.设置Axios拦截器importaxiosfrom'axios';//创建一个axios实例constaxiosInstance=axios.create({baseURL:'http://localhost:8000/',//后端API地址timeout:10000,//设置超时时间......
  • JWT 登录与注销示例
    1.后端(Django+DRF)实现安装依赖首先,确保安装了django-rest-framework和django-rest-framework-simplejwt:pipinstalldjangorestframeworkpipinstalldjangorestframework-simplejwt配置settings.py#settings.pyINSTALLED_APPS=[...'rest_framework'......
  • 鸿蒙Navigation拦截器实现页面跳转登录鉴权方案
    我们在进行页面跳转时,很多情况下都得考虑登录状态问题,比如进入个人信息页面,下单交易页面等等。在这些场景下,通常在页面跳转前,会先判断下用户是否已经登录,若已登录,则跳转到相应的目标页面,若没有登录,则先跳转到登录页面,然后等着获取登录状态,若登录页面关闭时,能获取到已登录,则继续跳......
  • 【魔珐有言-注册/登录安全分析报告-无验证方式导致安全隐患】
    前言由于网站注册入口容易被黑客攻击,存在如下安全问题:1.暴力破解密码,造成用户信息泄露2.短信盗刷的安全问题,影响业务及导致用户投诉3.带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机......
  • 【AiPPT-注册/登录安全分析报告-无验证方式导致安全隐患】
    前言由于网站注册入口容易被黑客攻击,存在如下安全问题:1.暴力破解密码,造成用户信息泄露2.短信盗刷的安全问题,影响业务及导致用户投诉3.带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞所以大部分网站及App都采取图形验证码或滑动验证码等交互解决方案,但在机......
  • Springboot初始化连接redisson
    一、maven依赖<!--redisson--><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.19.3</version></dependency>二、ClusterRedisson......
  • 使用 Wren 语言处理登录图片验证码的自动化方法
    在自动化测试中,处理验证码图像通常是一个挑战,尤其是在登录过程中。验证码是每次都会发生变化的图片,自动化工具需要能够读取这些图像并通过图像识别技术来解码图像内容。本文将介绍如何使用Wren语言来处理登录中的图片验证码。Wren是一种轻量级、高效的编程语言,适合嵌入式系统......
  • vue2的uniapp添加用户登录校验
    在uni-app中实现全局路由守卫的确切方法可能会根据框架的版本和具体的实现方式有所不同。在Vue2和uni-app的结合使用中,全局路由守卫并不是原生支持的功能,因此我们需要采用一些替代方案。对于Vue2和uni-app,你可以通过封装uni-app的页面跳转方法来实现类似全局......
  • 使用 Nim 语言处理登录图片验证码的自动化方法
    在自动化测试中,处理验证码通常是一个难题,尤其是在登录流程中。验证码图像每次刷新时都会发生变化,因此需要一种方式来自动化识别这些验证码。常见的处理方法有两种:获取验证码图片URL并下载:抓取验证码的URL地址来直接下载图片。然而,由于验证码每次都会刷新,直接访问URL获取的......
  • App中第三方登录和分享模块的实现
    @目录1流程2设计与实现3优化本文目的:“实现一套易于使用、维护的第三方登录和分享模块”我们开发App有时为了吸引用户,会引入三方的授权登录降低用户的注册和登录操作,同时会根据业务需求引入三方的分享服务。目前可用的第三方授权登录和分享有很多,国内比较常用的有微信、QQ、......