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

admin 2022年10月9日12:59:11评论48 views字数 2772阅读9分14秒阅读模式

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

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

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

  • 安全访问标记语言 (SAML)

  • 开放授权 (OAuth)

  • 开放 ID 连接 (OIDC)

  • Web 服务联合 (WS-Federation)

  • Kerberos


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

单点登录 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 帐户并拥有有效的凭据

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


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

  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 的示例登录页面

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


OAuth2 流与 OIDC 集成

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


上图解释了当您使用 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 之间的细微差别,然后看到了两者结合的用例。本文以哪些协议可用于某些用例结束。

出处:https://www.jdon.com/62238









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

↑↑↑长按图片识别二维码关註↑↑↑



原文始发于微信公众号(全栈网络空间安全):单点登录必知的两个著名协议:SAML、OAuth2

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年10月9日12:59:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   单点登录必知的两个著名协议:SAML、OAuth2http://cn-sec.com/archives/1337174.html

发表评论

匿名网友 填写信息