OpenID Connect / oAuth:如何允许 OpenId Provider 在依赖方(客户端)端访问用户数据
OpenID Connect / oAuth: How to allow OpenId Provider to access user's data at the Relying Party (Client) side
我们计划在两个服务之间进行集成:A
和 B
。
服务 A
将成为 OpenID 提供商,服务 B
依赖它来登录用户并创建新帐户。
服务 A
还使用 OAuth 授权通过 REST API 提供对其资源的访问,服务 B
使用通过 OpenID 授权代码流获得的 OAuth 访问令牌。
但是,在某些情况下,A
想要从 B
获取数据。这些服务之间已达成协议,A
可以在通过 OpenID Connect 创建的用户范围内访问来自 B
的任何数据。
如何设计服务 B
API 的授权? A
可以在 HTTP 请求中向 B
提供什么?
我正在考虑类似经典的东西 API Key
,但在这个工作流程中它看起来不自然。
从 OAuth 和 OpenID Connect 协议的角度来看,您提到的场景没有直接的解决方案。
但是根据您的解释,您在 service A
中拥有 OAuth 2.0 访问令牌保护服务。此外,A
充当身份提供者(具有 OpenID Connect 支持)。如果是这种情况,我相信您可以控制令牌发行过程和验证。
一个选项是启用来自 B
的服务,这些服务受到 OAuth 2.0 访问令牌的保护。这类似于您在 A
中已有的内容。要使用这些服务,您将有一些 service/client 实现绑定到 A
。他们会做的是从 A
本身获取令牌以与 B
通信。这可以遵循 client credential grant from OAuth 2.0,因为没有最终用户参与(场景涉及服务到服务交互)。
此建议的解决方案类似于 API 密钥用法,但具有 OAuth 2.0 的额外优势 protocol.This 允许您生成具有有限生命周期的访问令牌,并允许在需要时刷新它们。此外,如果您希望 B
的服务被另一个客户端使用,那么事情就很简单了。
我们计划在两个服务之间进行集成:A
和 B
。
服务 A
将成为 OpenID 提供商,服务 B
依赖它来登录用户并创建新帐户。
服务 A
还使用 OAuth 授权通过 REST API 提供对其资源的访问,服务 B
使用通过 OpenID 授权代码流获得的 OAuth 访问令牌。
但是,在某些情况下,A
想要从 B
获取数据。这些服务之间已达成协议,A
可以在通过 OpenID Connect 创建的用户范围内访问来自 B
的任何数据。
如何设计服务 B
API 的授权? A
可以在 HTTP 请求中向 B
提供什么?
我正在考虑类似经典的东西 API Key
,但在这个工作流程中它看起来不自然。
从 OAuth 和 OpenID Connect 协议的角度来看,您提到的场景没有直接的解决方案。
但是根据您的解释,您在 service A
中拥有 OAuth 2.0 访问令牌保护服务。此外,A
充当身份提供者(具有 OpenID Connect 支持)。如果是这种情况,我相信您可以控制令牌发行过程和验证。
一个选项是启用来自 B
的服务,这些服务受到 OAuth 2.0 访问令牌的保护。这类似于您在 A
中已有的内容。要使用这些服务,您将有一些 service/client 实现绑定到 A
。他们会做的是从 A
本身获取令牌以与 B
通信。这可以遵循 client credential grant from OAuth 2.0,因为没有最终用户参与(场景涉及服务到服务交互)。
此建议的解决方案类似于 API 密钥用法,但具有 OAuth 2.0 的额外优势 protocol.This 允许您生成具有有限生命周期的访问令牌,并允许在需要时刷新它们。此外,如果您希望 B
的服务被另一个客户端使用,那么事情就很简单了。