这篇文章最初发布在我的博客上。使用以下链接查看原始来源:
身份验证和授权对于确保应用程序和数据的安全至关重要。用于管理这些流程的三种广泛使用的协议是 OAuth、SAML 和 OpenID。
当您使用 Facebook、Google 或 LinkedIn 等应用程序登录其他网站时,您会遇到一些重要的协议:OAuth、SAML 和 OpenID Connect 。这些协议有助于确保您的信息安全,同时允许您访问不同的服务。
SAML 是一种开放标准,用于在各方之间交换身份验证和授权数据,特别是在身份提供商 (IdP) 和服务提供商 (SP) 之间。它主要用于单点登录 (SSO) 场景,使用户能够进行一次身份验证并获得对多个应用程序的访问权限。
角色/演员:
用户: 访问应用程序的个人。
身份提供商 (IdP): 对用户进行身份验证并提供身份断言的服务。
服务提供商 (SP): 用户尝试访问的应用程序或服务。
请求流程图:
单点登录 (SSO): 用户对多项服务进行一次身份验证。
基于 XML: 使用 XML 来处理消息,使其更加强大。
安全断言: 安全地传输用户身份和属性。
OAuth 是一种开放的访问委托标准,通常用于基于令牌的身份验证和授权。它允许第三方应用程序访问用户数据而不暴露其凭据。 OAuth 主要用于授权,使用户能够向另一站点授予对其在一个站点上托管的资源的有限访问权限。
角色/演员:
资源所有者: 拥有数据并授予数据访问权限的用户。
资源服务器: 托管用户数据的服务器(例如 Google、Facebook)。
客户端:请求访问用户数据的第三方应用程序。
授权服务器:在验证资源所有者身份后负责向客户端颁发访问令牌的服务器。
请求流程图:
委派访问: 用户可以在不共享凭据的情况下授予访问权限。
访问令牌:限制访问持续时间的短期令牌。
范围: 定义授予客户端的访问范围。
OpenID Connect 是构建在 OAuth 2.0 之上的身份验证层。它添加了身份验证,并为客户端提供了一种基于授权服务器执行的身份验证来验证用户身份的方法。
角色/演员:
最终用户:想要进行身份验证的用户。
客户端:请求用户身份验证的应用程序。
授权服务器:对用户进行身份验证并颁发令牌的服务器。
请求流程图:
ID 令牌: 提供用户信息和声明的 JWT。
与 OAuth 无缝集成: 结合身份验证和授权。
用户信息端点: 允许获取其他用户信息。
看起来很相似,但它们都有不同但互补的目的:
OAuth:用于授权。它允许应用程序从其他服务(例如 Facebook 或 Google)访问资源(例如您的个人资料或照片),而无需您的密码。当您想要授予对您的数据的有限访问权限(例如,第三方应用程序访问您的日历)时,请使用 OAuth。
OpenID Connect (OIDC):构建在 OAuth 之上,用于身份验证。它会验证您的身份并允许应用程序知道您是谁。当您需要使用 Google 等服务登录网站或应用程序以证明您的身份时,请使用 OpenID Connect。
使用 OAuth:
使用 OpenID Connect:
特征 | OAuth | SAML | OpenID 连接 |
---|---|---|---|
目的 | 授权 | 验证 | 身份验证与授权 |
格式 | JSON、令牌 | XML | JSON |
用例 | API 访问、移动应用程序 | Web 应用程序、SSO | 网络和移动应用程序 |
复杂 | 缓和 | 高的 | 缓和 |
用户体验 | 重定向至 IdP | 重定向至 IdP | 重定向到授权服务器 |
了解 OAuth、SAML 和 OpenID Connect 对于构建有效处理用户身份验证和授权的安全应用程序至关重要。每个协议都有其目的,确保您可以访问所需内容,同时保证数据安全。
OAuth 2.0 简单解释
什么是 SAML?
OpenID Connect 概述
了解差异:OAuth、SAML 和 OpenID Connect
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3