WebService/REST API 调用的身份验证和授权

请遵循此概述,了解身份验证和 SSO 的关注点如何组合在一起以插入授权(主要在 API 授权的范围内)。

本文的目的是概述身份验证和 SSO 的关注点如何组合在一起以插入授权(主要在 API 授权的范围内)。应用程序体系结构利用在所有应用程序(如 B2C、B2B 和 B2E)中协同工作所需的行业标准协议和模式。本文档的主要读者是应用程序架构师和应用程序安全架构师。但是,标识和访问管理空间中的用户也会发现此处提供的概念适用于他们。

Web 应用程序和移动胖客户端身份验证策略
对于所有应用程序领域(B2C、B2B 和 B2E),跨 Web 应用程序(移动和非移动)的用户身份验证和授权应侧重于 SSO(单点登录)。Web 应用程序使用支持 SAML2 和 OAuth2 等标准的身份提供程序对用户进行身份验证。此外,所有移动(手机或平板电脑)胖应用程序都应使用支持行业标准 OAuth2 协议的身份提供程序来验证其用户。

JWT: JSON Web Tokens
JSON Web Token (JWT) 是一种 JavaScript 对象表示法,是 HTTP HTTP 授权标头和查询参数的表示格式。JSON 与 JSON Web 签名 (JWS) 结构一起用于 REST API 有效负载中,或用作 JSON Web 加密 (JWE) 结构的明文,用于使声明成为数字声明。JWT 始终使用 JWS/JWE Compact 序列化来表示。JWT的工作原理是简单地对由小JSON对象组成的字符串进行编码,并使用双方共享的秘密对其进行哈希处理。该算法是可配置的,但通常是HMAC SHA-256。JWT 不会加密有效负载,它只会对其进行签名。

Web 应用程序身份验证和单点登录
基于行业标准的 Web 应用程序身份验证和 SSO 方法围绕两种协议展开。

市场监管局 2.0
OAuth2
OAuth2协议最初被大型社交网站(Facebook,Google,Twitter等)广泛采用进行身份验证,因为他们已经采用了OAuth2并创建了专有的SSO机制。因此,用户在使用其 API 进行身份验证后,可以在其应用程序之间来回切换。虽然 SAML 2.0 在旧应用程序中被广泛采用,用于验证 REST/JSON 超过 SOAP/XML。如今,所有应用程序都采用OAuth2作为标准。

OAuth 2 访问令牌
RESTful API 使用 OAuth2 进行保护。期望调用方提供 OAuth2 访问令牌。调用方提供的访问令牌应仅作为授权 HTTP 标头传递,例如:

授权:不记名access_token
客户端通过 HTTPS/SSL 与 RESTful API 交互,并且 HTTP 标头的内容和访问令牌已加密。因此,通过如下所示的查询参数传递 OAuth2 访问令牌是被禁止的标准,因为访问令牌(必须保密)在传输过程中公开并显示在 Web 服务器日志中。

https://<<URL>>/profile?access_token=MzJmNDc3M2VjMmQzN
因此,关键点是客户端必须获取OAuth2访问令牌才能与RESTful API进行交互。有几种方法可以获取令牌,具体取决于应用程序类型、所涉及的授权源、是否采用 SSO 方法等。所有这些方法都需要与 OAuth2 授权服务器进行通信。必须了解 OAuth2 框架不提供 SSO。

OAuth2 中的角色
资源所有者 - 这是使用应用程序的用户,拥有/有权访问资源服务器提供的数据。它们授权客户端应用程序访问后端数据。
资源服务器 - 公开 RESTful API 的服务器。
客户端应用程序 - 请求访问资源服务器的应用程序。它可以是传统的 Web 应用程序、JavaScript(单页应用程序或 SPA)应用程序或移动应用程序。
授权服务器 - 服务器向客户端颁发访问令牌。客户端使用这些令牌来请求对资源服务器的访问。

OAuth2 REST API Access
Web 应用程序需要访问 RESTful API,并且 Web 应用程序已经拥有在用户进行身份验证时与 JSON Web 令牌 (JWT) 一起传递的访问令牌。由于 OAuth2 需要身份验证来提供访问令牌,并且应用程序由于用户身份验证而已具有访问令牌,因此两者使用此模式组合在一起。这适用于同时使用两者并且用户已登录的所有 Web 应用程序。符合 OAuth2 标准的授权服务器在 OAuth 2.0 令牌验证终结点上返回带有用户声明的 JWT。OAuth2 Connect 兼容标识服务器返回包含用户声明的 JWT。符合 OAuth2 标准的授权服务器可以返回 JWT 或 JSON 作为用户信息终结点响应。

向所有 REST API 的安全 SSL 和 TLS 通道公开始终是一个好主意。最后,OAuth2 是使用 JWT 令牌机制的微服务架构中广泛使用的 REST API 身份验证。

新品推荐

河北网云信息技术有限公司 冀ICP备19008803号-3