”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > SAML、OAuth 与 OpenID Connect

SAML、OAuth 与 OpenID Connect

发布于2024-11-06
浏览:972

这篇文章最初发布在我的博客上。使用以下链接查看原始来源:

SAML vs. OAuth vs. OpenID Connect

SAML、OAuth 与 OpenID Connect

本文将探讨 SAML、OAuth 和 OpenID Connect、它们的用例以及它们如何相互交互

SAML vs. OAuth vs. OpenID Connect rahulvijayvergiya.hashnode.dev

身份验证和授权对于确保应用程序和数据的安全至关重要。用于管理这些流程的三种广泛使用的协议是 OAuth、SAML 和 OpenID。

当您使用 Facebook、Google 或 LinkedIn 等应用程序登录其他网站时,您会遇到一些重要的协议:OAuthSAMLOpenID Connect 。这些协议有助于确保您的信息安全,同时允许您访问不同的服务。

1.SAML(安全断言标记语言)

SAML 是一种开放标准,用于在各方之间交换身份验证和授权数据,特别是在身份提供商 (IdP) 和服务提供商 (SP) 之间。它主要用于单点登录 (SSO) 场景,使用户能够进行一次身份验证并获得对多个应用程序的访问权限。

SAML 的工作原理

角色/演员:

  • 用户: 访问应用程序的个人。

  • 身份提供商 (IdP): 对用户进行身份验证并提供身份断言的服务。

  • 服务提供商 (SP): 用户尝试访问的应用程序或服务。

请求流程图:

SAML vs. OAuth vs. OpenID Connect

SAML 的主要特性

  • 单点登录 (SSO): 用户对多项服务进行一次身份验证。

  • 基于 XML: 使用 XML 来处理消息,使其更加强大。

  • 安全断言: 安全地传输用户身份和属性。


2.OAuth(开放授权)

OAuth 是一种开放的访问委托标准,通常用于基于令牌的身份验证和授权。它允许第三方应用程序访问用户数据而不暴露其凭据。 OAuth 主要用于授权,使用户能够向另一站点授予对其在一个站点上托管的资源的有限访问权限。

OAuth 的工作原理

角色/演员:

  • 资源所有者: 拥有数据并授予数据访问权限的用户。

  • 资源服务器: 托管用户数据的服务器(例如 Google、Facebook)。

  • 客户端:请求访问用户数据的第三方应用程序。

  • 授权服务器:在验证资源所有者身份后负责向客户端颁发访问令牌的服务器。

请求流程图:

SAML vs. OAuth vs. OpenID Connect

OAuth 的主要特点

  • 委派访问: 用户可以在不共享凭据的情况下授予访问权限。

  • 访问令牌:限制访问持续时间的短期令牌。

  • 范围: 定义授予客户端的访问范围。


3.OpenID连接

OpenID Connect 是构建在 OAuth 2.0 之上的身份验证层。它添加了身份验证,并为客户端提供了一种基于授权服务器执行的身份验证来验证用户身份的方法。

OpenID Connect 的工作原理

角色/演员:

  • 最终用户:想要进行身份验证的用户。

  • 客户端:请求用户身份验证的应用程序。

  • 授权服务器:对用户进行身份验证并颁发令牌的服务器。

请求流程图:

SAML vs. OAuth vs. OpenID Connect

OpenID Connect 的主要特性

  • ID 令牌: 提供用户信息和声明的 JWT。

  • 与 OAuth 无缝集成: 结合身份验证和授权。

  • 用户信息端点: 允许获取其他用户信息。

OpenID ConnectOAuth

看起来很相似,但它们都有不同但互补的目的:

  • OAuth:用于授权。它允许应用程序从其他服务(例如 Facebook 或 Google)访问资源(例如您的个人资料或照片),而无需您的密码。当您想要授予对您的数据的有限访问权限(例如,第三方应用程序访问您的日历)时,请使用 OAuth。

  • OpenID Connect (OIDC):构建在 OAuth 之上,用于身份验证。它会验证您的身份并允许应用程序知道您是谁。当您需要使用 Google 等服务登录网站或应用程序以证明您的身份时,请使用 OpenID Connect。

何时使用:

  • 使用 OAuth:

    • 当您希望应用程序代表您访问数据或资源时(例如,应用程序为您在 Twitter 上发布信息)。
    • “这个应用程序可以访问我的数据吗?” (授权)
  • 使用 OpenID Connect:

    • 当您需要验证用户身份时(例如,使用您的 Google 帐户登录网站)。
    • “这个用户是谁?” (验证)

OAuth、SAML 和 OpenID Connect 的快速比较

特征 OAuth SAML OpenID 连接
目的 授权 验证 身份验证与授权
格式 JSON、令牌 XML JSON
用例 API 访问、移动应用程序 Web 应用程序、SSO 网络和移动应用程序
复杂 缓和 高的 缓和
用户体验 重定向至 IdP 重定向至 IdP 重定向到授权服务器

结论

了解 OAuth、SAML 和 OpenID Connect 对于构建有效处理用户身份验证和授权的安全应用程序至关重要。每个协议都有其目的,确保您可以访问所需内容,同时保证数据安全。

参考

  1. OAuth 2.0 简单解释

  2. 什么是 SAML?

  3. OpenID Connect 概述

  4. 了解差异:OAuth、SAML 和 OpenID Connect

版本声明 本文转载于:https://dev.to/rahulvijayvergiya/saml-vs-oauth-vs-openid-connect-29m4?1如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3