使用 OpenID Connect 保护 API - OP 的 RP 信任
Secure API with OpenID Connect - RP trust of OP
通过第三方 IdP (OP) 掌握 OpenID Connect 并保护 APIs。我对客户端和用户代理组件以及 OAuth2.0 流程和范围感到满意,以获取从 IdP
发给我的客户端的访问令牌和 ID 令牌
我正在努力解决的是资源提供者端以及受保护的 API 如何信任客户端传递的访问令牌。我一直将信任元素等同于 SAML 以及 IdP 和 SP 之间静态配置数据的初始交换。这似乎在 OpenID Connect 中缺失,所以我缺少信任元素。我正在阅读有关动态发现的内容,但我又一次错过了关于 RP 和 IdP 之间信任的技巧。是什么阻止我设置流氓 IdP?为什么 API 提供商信任来自我的 IdP 的令牌?
最后一个问题是关于 RP 中唯一标识符的本地表示。帐户 ID 是否需要在呈现访问令牌之前存在?我希望它确实如此(再次使用 SAML 类比,它需要在身份验证成功之前的本地帐户表示)因此依赖方的帐户管理也是端到端身份验证成功的要求。
归结为两个问题。 API 如何信任提供的访问令牌? API 提供商是否需要在成功验证这些资源请求之前配置帐户?
提前致谢。
对于 RP 与 OP 的动态注册,没有描述信任度量。可以强制执行两个 HTTP 信任级别。
- 链接到信任证书根的证书需要 HTTPS。
- HTTPS 有 EV 证书。这需要 CAB 定义的校对。
我已经提议在 IDESG 中使用信任生态系统,但这还有一段路要走。
看看 Kantara 是否有任何解决方案会很有趣。
动态客户端注册恰好用于各方之间没有预先建立的信任并且想要允许任何具有有效证书的 OP 播放的情况。
当您想要限制 OP 集时,您需要预先向这些 OP 进行静态注册,从而进行与 SAML 中相同类型的引导以创建预先建立的信任。
唯一标识符可以由 RP 收到的 id_token
中的 (<sub>
,<iss>
) 元组创建。
从 OpenID Connect 的角度来看,您是正确的。这并不意味着您构建的任何依赖方代码都需要不安全。我提到了两种验证 OP 的方法。
OP 可以强制执行一组类似的安全规则,但正如其他人所说,大多数 OP 出于这个原因不启用动态注册。
id_token 是 JWS 签名的 JWT。它由 OpenID Connect OP (IdP) 签名,通常使用其私钥。您必须验证签名,以确保您知道 JWT/id_token 发射器。之后,由您决定是否可以信任此发射器以实现客户端愿意实现的操作。
id_token 包含声明 (at_hash),它是对 access_token 的引用,因此您可以确定访问令牌是由同一 OP 生成的。
通过第三方 IdP (OP) 掌握 OpenID Connect 并保护 APIs。我对客户端和用户代理组件以及 OAuth2.0 流程和范围感到满意,以获取从 IdP
发给我的客户端的访问令牌和 ID 令牌我正在努力解决的是资源提供者端以及受保护的 API 如何信任客户端传递的访问令牌。我一直将信任元素等同于 SAML 以及 IdP 和 SP 之间静态配置数据的初始交换。这似乎在 OpenID Connect 中缺失,所以我缺少信任元素。我正在阅读有关动态发现的内容,但我又一次错过了关于 RP 和 IdP 之间信任的技巧。是什么阻止我设置流氓 IdP?为什么 API 提供商信任来自我的 IdP 的令牌?
最后一个问题是关于 RP 中唯一标识符的本地表示。帐户 ID 是否需要在呈现访问令牌之前存在?我希望它确实如此(再次使用 SAML 类比,它需要在身份验证成功之前的本地帐户表示)因此依赖方的帐户管理也是端到端身份验证成功的要求。
归结为两个问题。 API 如何信任提供的访问令牌? API 提供商是否需要在成功验证这些资源请求之前配置帐户?
提前致谢。
对于 RP 与 OP 的动态注册,没有描述信任度量。可以强制执行两个 HTTP 信任级别。
- 链接到信任证书根的证书需要 HTTPS。
- HTTPS 有 EV 证书。这需要 CAB 定义的校对。
我已经提议在 IDESG 中使用信任生态系统,但这还有一段路要走。 看看 Kantara 是否有任何解决方案会很有趣。
动态客户端注册恰好用于各方之间没有预先建立的信任并且想要允许任何具有有效证书的 OP 播放的情况。
当您想要限制 OP 集时,您需要预先向这些 OP 进行静态注册,从而进行与 SAML 中相同类型的引导以创建预先建立的信任。
唯一标识符可以由 RP 收到的 id_token
中的 (<sub>
,<iss>
) 元组创建。
从 OpenID Connect 的角度来看,您是正确的。这并不意味着您构建的任何依赖方代码都需要不安全。我提到了两种验证 OP 的方法。
OP 可以强制执行一组类似的安全规则,但正如其他人所说,大多数 OP 出于这个原因不启用动态注册。
id_token 是 JWS 签名的 JWT。它由 OpenID Connect OP (IdP) 签名,通常使用其私钥。您必须验证签名,以确保您知道 JWT/id_token 发射器。之后,由您决定是否可以信任此发射器以实现客户端愿意实现的操作。
id_token 包含声明 (at_hash),它是对 access_token 的引用,因此您可以确定访问令牌是由同一 OP 生成的。