为什么要使用客户端凭证流?
Why use Client Credentials flow?
我一直在考虑使用 oauth2 客户端凭证授权来保护我的 API(所有用户都将成为受信任的第 3 方)。我在这里采用与贝宝相同的方法:https://developer.paypal.com/docs/integration/direct/paypal-oauth2/
但是,我看到 HTTP:// basic auth 用于获取不记名令牌。然后不记名令牌用于保护 API 调用。
我不明白的是,如果您要信任 TLS 和 http: basic auth 来检索不记名令牌 - 为什么不只对 API 调用使用 http: basic auth?使用不记名令牌有什么好处?
我错过了什么?
根据The OAuth 2.0 Authorization Framework: Bearer Token Usage
The access token provides an abstraction, replacing different
authorization constructs (e.g., username and password, assertion) for
a single token understood by the resource server. This abstraction
enables issuing access tokens valid for a short time period, as well
as removing the resource server's need to understand a wide range of
authentication schemes.
授权请求并为您提供 Bearer Token 的服务器可能与实际控制您尝试访问的资源的服务器不同。
根据 RFC,它们显示为两个不同的实体。为您提供 Bearer Token 的是 Authorization Server,提供资源的是 Resource Server.
补充一下 Ankit Saroch 所说的,使用令牌的 OAuth 方式可能会在未来开辟其他可能性;假设您可能希望扩展流程以包含用户信息。通过仅验证令牌,这意味着您可能不需要更改服务中的令牌验证(这很简单),而只需更改身份验证和授权步骤。
但显然您说的是对的:客户端凭据 OAuth 流程不比简单地使用技术更安全像 API 密钥或基本身份验证。所有这些都依赖于客户的机密性(它可以将其凭据保密)。
OAuth 规范 (https://www.rfc-editor.org/rfc/rfc6749#section-2.1) 讨论了这些客户端类型。总的来说,实际上值得阅读规范。
我一直在考虑使用 oauth2 客户端凭证授权来保护我的 API(所有用户都将成为受信任的第 3 方)。我在这里采用与贝宝相同的方法:https://developer.paypal.com/docs/integration/direct/paypal-oauth2/
但是,我看到 HTTP:// basic auth 用于获取不记名令牌。然后不记名令牌用于保护 API 调用。
我不明白的是,如果您要信任 TLS 和 http: basic auth 来检索不记名令牌 - 为什么不只对 API 调用使用 http: basic auth?使用不记名令牌有什么好处?
我错过了什么?
根据The OAuth 2.0 Authorization Framework: Bearer Token Usage
The access token provides an abstraction, replacing different authorization constructs (e.g., username and password, assertion) for a single token understood by the resource server. This abstraction enables issuing access tokens valid for a short time period, as well as removing the resource server's need to understand a wide range of authentication schemes.
授权请求并为您提供 Bearer Token 的服务器可能与实际控制您尝试访问的资源的服务器不同。
根据 RFC,它们显示为两个不同的实体。为您提供 Bearer Token 的是 Authorization Server,提供资源的是 Resource Server.
补充一下 Ankit Saroch 所说的,使用令牌的 OAuth 方式可能会在未来开辟其他可能性;假设您可能希望扩展流程以包含用户信息。通过仅验证令牌,这意味着您可能不需要更改服务中的令牌验证(这很简单),而只需更改身份验证和授权步骤。
但显然您说的是对的:客户端凭据 OAuth 流程不比简单地使用技术更安全像 API 密钥或基本身份验证。所有这些都依赖于客户的机密性(它可以将其凭据保密)。
OAuth 规范 (https://www.rfc-editor.org/rfc/rfc6749#section-2.1) 讨论了这些客户端类型。总的来说,实际上值得阅读规范。