Redian新闻
>
单点登录必知的两个著名协议:SAML、OAuth2

单点登录必知的两个著名协议:SAML、OAuth2

公众号新闻

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 
来源:www.jdon.com/62238

在本文中,我们将了解单点登录 (SSO) 和 SSO 广泛使用的两种协议,即 SAML 和OAuth2。这是任何程序员都需要理解的复杂领域之一。

什么是单点登录?

单点登录 (SSO) 是用户可以使用一组凭据登录多个应用程序的过程。考虑到如今网站的数量以及其中大多数都要求进行身份验证,这是一个方便且高效的功能。我们都知道,我们无法为每个应用程序跟踪如此多的凭据集。SSO 来救援了!!!用户无需一遍又一遍地建立身份,只需对用户进行一次身份验证,然后就可以访问多个不同的服务和应用程序。一个这样的功能的例子是谷歌。只需一次登录,您就可以访问他们的所有服务,例如 Gmail、照片、云端硬盘等等。其他应用程序还允许用户使用 Google 登录进行身份验证,前提是他们的系统与 Google、Facebook 等身份提供商集成

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

SSO 的类型

提供 SSO 的标准和协议有很多,其中一些著名的是

  • 安全访问标记语言 (SAML)
  • 开放授权 (OAuth)
  • 开放 ID 连接 (OIDC)
  • Web 服务联合 (WS-Federation)
  • Kerberos

在本文的后面部分,我们将详细介绍 SAML、OAuth2 和 OIDC。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

单点登录 SSO 的好处

SSO 有很多好处,如下所示

  • 降低访问第三方网站的风险
  • 减少为同一身份重新输入密码所花费的时间
  • 更简单的审计管理和使用
  • 更好的行政控制
  • 提高用户生产力
  • 更好的网络安全
  • 减少攻击面
  • 无缝且安全的用户访问

什么是 SAML(安全断言标记语言)?

SAML 是一种基于 XML 的标准,用于在 IdP 和服务提供商之间交换身份验证和授权数据,以验证用户的身份和权限,然后授予或拒绝他们对服务的访问权限。SAML 是一种开放标准,已成为 SSO 的核心标准之一。SAML 使用身份提供者发送给服务提供者的称为断言(包含用户授权)的 XML 文档。SAML 2.0 于 2005 年推出,并且仍然是该标准的当前版本。SAML 2.0 专门针对 Web 应用程序进行了优化,使信息能够通过 Web 浏览器传输

SAML 术语

  • IdP——身份提供者
  • SP - 服务提供商
  • 用户——使用系统访问服务提供商服务的用户

典型的 SAML 工作流由 IdP、SP 和用户组成。用户信息作为断言发送。让我们假设用户有一个 Idp 帐户并拥有有效的凭据

让我们将上图分解为多个步骤,以便于理解

  1. 用户转到服务提供商并单击 SAML 登录
  2. SP 将请求重定向到身份提供者
  3. 身份提供者向用户显示登录页面以输入凭据
  4. 输入凭据后,SAML IdP 会验证其 Active Directory 或数据库中的凭据
  5. 验证后,SAML 响应会以 XML 格式发送带有断言,如上所示
  6. 然后用户将登录到应用程序

什么是 OAuth2?

OAuth 是比 SAML 更新的标准,由 Google 和 Twitter 于 2006 年开始联合开发。它的开发部分是为了弥补 SAML 在移动平台上的不足,并且基于JSON而不是 XML。OAuth2 广泛使用 JWT 令牌,因此比 SAML 更轻、更快。

在深入探讨 OAuth2 和 OIDC 之前,让我们先看看使用的术语 OAuth2 术语

  • 授权服务器——(例如:谷歌)
  • 资源服务器——(例如:Bitbucket)
  • 资源所有者——使用系统从资源服务器访问服务的用户(例如:Bitbucket 用户)

OAuth2 协议允许授权服务器在获得资源所有者(用户)的同意后向第三方应用程序颁发访问令牌这些访问令牌被 Bitbucket、Slack 等第三方应用程序用于访问资源提供的资源服务器。

如果您已注册新应用程序并同意从 Google/Facebook 等导入联系人,则您必须已经使用过 OAuth2。您可能使用了要求您在 Facebook/Instagram 等上分享您的帖子或照片的功能。这是OAuth2 协议,提供安全的委托访问,无需共享凭据 OAuth2 仅用于授权而不用于身份验证

什么是 OpenID Connect (OIDC)?

使用 OpenID,用户的凭据仅在浏览器路由请求后由授权服务器使用。验证后,将向用户颁发访问令牌,用户可以通过该令牌访问多个应用程序,而无需与每个应用程序共享其凭据。如果您已使用 Google / Facebook / Twitter 登录名登录应用程序,则您必须已经使用过 OIDC。OpenID Connect 是组织用来验证用户身份的开放标准。

OIDC 用于对用户进行身份验证

将 OIDC 与 OAuth2 结合使用 OAuth 是一种开放标准的授权协议,用于授权用户,OIDC 用于验证用户。OIDC 位于 OAuth 2.0 之上,以添加有关用户的信息并启用 SSO 流程。它允许跨多个应用程序使用一个登录会话。例如,如下所示,您可以使用社交媒体登录来访问应用程序,而无需在应用程序中创建帐户

启用 OAuth2 和 OIDC 的示例登录页面

OAuth2 流与 OIDC 集成

上图解释了当您使用 Google 登录应用程序时发生的整个过程。步骤的数量可能看起来很复杂,但整个过程在几毫秒到几秒内结束。让我们一步一步地分解它。假设用户已经有 Google 的登录帐户

  1. 用户进入 Bitbucket 页面登录
  2. 用户点击使用 Google 登录
  3. 浏览器将用户重定向到 Google 登录页面
  4. Google 显示凭据页面供用户输入凭据
  5. 用户输入谷歌凭据并点击提交
  6. Google 验证凭据并生成访问令牌并将其发送到浏览器
  7. 浏览器在Authorization Header中嵌入Access Token(Bearer Token),将用户的登录请求发送到BitBucket服务器
  8. Bitbucket 服务器将联系 Google 验证访问令牌并响应浏览器
  9. 现在用户登录到 Bitbucket 应用程序

何时使用 SAML 以及何时使用 OAuth2(使用 OIDC)

尽管 SAML 在企业设置中可能看起来更优越,但在某些情况下 OAuth 是有意义的。

  1. 政府应用程序的身份管理:政府数据的机密、敏感性质需要具有更强的安全性,而 SAML 将适合这种情况。例如:新加坡政府使用一个名为SingPass的基于 SAML 的系统作为其居民使用所有基于政府的服务的数字登录名
  2. 用户体验是重中之重:OAuth2 最适合用户体验,因为它在移动设备上运行良好。而且它很轻。
  3. 移动和消费者应用程序:OAuth2 在移动设备和消费者应用程序上运行良好,因为会话往往更短
  4. 虚拟桌面基础架构 (VDI) 实施:使用 SAML。VDI 将被企业内的许多员工使用。
  5. 资源需要临时访问:OAuth2 非常适合临时访问,因为它是为此目的而设计的

在本文中,我们看到了 SSO 的类型和优势。然后我们深入研究了两个著名的 SSO 协议,即 SAML 和 OAuth2。在探索OAuth2时,我们看到了 OAuth2 和 OIDC 之间的细微差别,然后看到了两者结合的用例。本文以哪些协议可用于某些用例结束。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
特别策划 | 生活不要“卷” 养车简单点 途虎养车携手德国马牌、壳牌喜力开启双11全民养车季Java 近期新闻:Spring Framework 6、JCP 选举、Valhalla 项目、OpenJDK 更新性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!那个著名的乌鸦嘴去世了,从贫民窟长大的男孩终于成为一代巨星【图解】收藏!新冠防护必知的40个知识点收藏!新冠防护必知的40个知识点芝加哥新出独家好房:South Loop 2.5室2卫 无敌湖景【讲座】 “彼岸|文化”出品第44期 彼岸的彼岸——穿越两个帝国的两个世纪Out with the old, in with the new. JuniorCoach is here for youJava 近期新闻:OmniFish 简介、Oracle 加入 Micronaut 基金会、OpenJDK 升级【本周讲座】《留学生必知的期中考试雷区及注意事项》找牙医的体会《太平世界,环球同此凉热。》图说丨收藏!新冠防护必知的40个知识点在伊朗,一群没有道德良知的人在教育有道德良知的人今年大扫除想简单点?这 10 件值得囤从单点智能到全流程AI,腾讯云智能AI能力「成团出道」谷歌正式推出 “密钥登录”,逐步取代传统密码登录精选SDE岗位 | Cisco、OpenGov、Color Health等公司发布最新岗位!女儿:你是我的摇钱树[干货] out of question 和 out of the question,含义天壤之别!网络协议:TCP和UDP什么区别?(附视频)Linux新手必知的常用命令大全美国高增长科技股中被「误杀」的两只个股:ServiceNow、CloudflareCan China’s Farmers Cut Out the Middlemen?祭拜林彪单月获客58万,“小奔运动”为什么要单点击穿跳绳?【炜炜道来】 当下市场策略和行业简单点评简单点,数字化的方式简单点女人怎么避免“俗气”穿搭?款式简单点,材质高级点!爆款单点突围千亿市场,珍宝岛如何利用中药材全产业链逆势增长聚焦亲子家庭场景,营收过亿背后:Cutelife品牌快速崛起的两个关键2023年芝加哥9大亮点登场,将引爆人潮钱潮龙虾粥,拿铁哈斯:新F1冠名协议能让车队接近预算帽水平运作
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。