是否应允许非机密客户端应用程序使用 OAuth 2.0 客户端凭据流程?
Should non-confidential client applications be allowed to use the OAuth 2.0 Client Credentials flow?
根据 OAuth 2.0 授权框架,当通过 Client Credentials Grant 流程获得授权时,它说:
“客户端凭据授予类型必须仅由机密客户端使用。”
我已经实现了一个 OAuth 2.0 提供程序 API 和门卫(Ruby 在 Rails gem 上)。但是,由 OAuth 2.0 提供商创建的非机密客户端应用程序只能使用带有 client_id 的客户端凭证授予流程,即没有 client_secret。这是预期的行为吗?
我在寻求保护我的资源服务器 API 时遇到了这个问题,这样即使 public 端点不需要最终用户被自动化,即当客户端是资源所有者,客户端仍然需要提供访问令牌。
在此用例中,授权代码授予流程不相关,因为资源所有者不是最终用户,并且根据最新的 OAuth 2.0 安全建议,不建议使用隐式授予流程。在此基础上,我发现客户端凭证授予流程是最相关的流程,但我想仔细检查它是否适合使用,即使 OAuth 2.0 框架规定它只能由机密客户端使用。
client_credentials 授予只能由机密客户端使用,因为客户端需要存储秘密。这是因为客户端需要向授权服务器发送 client_id 和 client_secret 才能获得令牌。
我不知道 client_credentials 流程只能与 client_id.
一起使用的任何特殊方式
据我所知,看门人文档也没有提到这一点。
但是当客户端需要保存机密时,我不会在非机密客户端中使用 client_credentials 流程。而且我不会使用任何只发送其 client_id 而没有其他任何东西到 /token 端点来获取令牌的授权。
根据 OAuth 2.0 授权框架,当通过 Client Credentials Grant 流程获得授权时,它说: “客户端凭据授予类型必须仅由机密客户端使用。”
我已经实现了一个 OAuth 2.0 提供程序 API 和门卫(Ruby 在 Rails gem 上)。但是,由 OAuth 2.0 提供商创建的非机密客户端应用程序只能使用带有 client_id 的客户端凭证授予流程,即没有 client_secret。这是预期的行为吗?
我在寻求保护我的资源服务器 API 时遇到了这个问题,这样即使 public 端点不需要最终用户被自动化,即当客户端是资源所有者,客户端仍然需要提供访问令牌。
在此用例中,授权代码授予流程不相关,因为资源所有者不是最终用户,并且根据最新的 OAuth 2.0 安全建议,不建议使用隐式授予流程。在此基础上,我发现客户端凭证授予流程是最相关的流程,但我想仔细检查它是否适合使用,即使 OAuth 2.0 框架规定它只能由机密客户端使用。
client_credentials 授予只能由机密客户端使用,因为客户端需要存储秘密。这是因为客户端需要向授权服务器发送 client_id 和 client_secret 才能获得令牌。 我不知道 client_credentials 流程只能与 client_id.
一起使用的任何特殊方式据我所知,看门人文档也没有提到这一点。
但是当客户端需要保存机密时,我不会在非机密客户端中使用 client_credentials 流程。而且我不会使用任何只发送其 client_id 而没有其他任何东西到 /token 端点来获取令牌的授权。