OpenID Connect的安全API - OP的RP信任

时间:2017-04-23 09:23:32

标签: security authentication oauth-2.0 openid-connect

掌握OpenID Connect与第三方IdP(OP)并保护API。我对客户端和用户代理组件以及OAuth2.0流程和范围感到满意,以获取从IdP发给我的客户端的访问令牌和ID令牌

我正在努力的是资源提供者端以及安全API如何信任客户端传递的访问令牌。我一直将信任元素等同于SAML以及IdP和SP之间的静态配置数据的初始交换。这似乎在OpenID Connect中缺失,所以我错过了信任元素。我正在阅读有关动态发现的内容,但我再次错过了关于RP和IdP之间信任的技巧。什么阻止我设置一个流氓IdP?为什么API提供商应该信任来自我的IdP的令牌?

最后一个问题是RP中唯一标识符的本地表示。帐户ID是否需要在呈现访问令牌之前存在?我希望它确实如此(再次使用SAML类比,需要在身份验证成功之前进行本地帐户表示),因此依赖方的帐户管理也是端到端身份验证成功的必要条件。

归结为两个问题。 API如何信任提供的访问令牌? API提供商是否需要在成功验证资源请求之前配置帐户?

提前致谢。

4 个答案:

答案 0 :(得分:0)

对于使用OP动态注册RP,没有描述的信任度量。可以强制执行两个HTTP信任级别。

  1. 需要HTTPS,证书可以链接到信任证书的根目录。
  2. HTTPS具有EV证书。这需要CAB定义的防伪。
  3. 我建议在IDESG中使用信任生态系统,但这有一些方法。 看看Kantara是否有任何解决方案会很有趣。

答案 1 :(得分:0)

动态客户端注册恰好用于各方之间没有预先建立的信任,并且希望允许任何具有有效证书的OP发挥作用。

当您想要限制OP的集合时,您需要提前静态注册,从而执行相同类型的引导以创建SAML中预先建立的信任。

可以通过RP收到的<sub>中找到的(<iss>id_token)元组创建唯一标识符。

答案 2 :(得分:0)

从OpenID Connect角度来看,您是对的。这并不意味着您构建的任何依赖方代码都需要不安全。我提到了两种可以验证OP的方法。

OP可以执行一组类似的安全规则,但正如其他人所说的那样,大多数OP都不会因此而启用动态注册。

答案 3 :(得分:0)

id_token是JWS签名的JWT。它由OpenID Connect OP(IdP)签名,通常使用其私钥。您必须验证签名,以便确定您知道JWT / id_token发射器。在此之后,由您决定是否可以信任此发射器以满足客户愿意实现的操作。

id_token包含一个声明(at_hash),它是对access_token的引用,因此您可以确保访问令牌是由同一个OP生成的。