OIDC签名验证

时间:2019-03-04 08:36:57

标签: verification xml-signature oidc

我们正在与商业客户一起测试自己的OIDC-IDP。 (我们无权访问客户端代码。)经过一些测试,客户端始终返回

  

OpenID Connect令牌验证失败:令牌签名无效(ID_TOKEN)

IDP遍布网络,客户端位于我们自己的网络中,中间有一个SSL断路器。我们在WWW中也有一个测试客户端,它工作正常。

我的问题是,OIDC客户端使用哪个证书来验证签名。是IDP网站的证书吗?如果是这样,是否可能是导致此错误的原因,所以ssl-breaker是否替换了原始证书?

1 个答案:

答案 0 :(得分:0)

关于OIDC术语的注意事项

  • OpenId Provider(OP)类似于SAML2 IdP
  • 依赖方(RP)类似于SAML2 SP

当您编写“ IdP”和“ client”时,我知道您指的是什么,但我想提一提,您通常会看到OIDC文档/讨论中使用的OP和RP。

背景和建议

您正在测试的商业RP指出ID令牌(即JWT)的签名验证失败。要专门回答您的问题,不,不是 not ,而是使用OP网站上的x509证书来验证签名。 RP用于验证签名的密钥取决于您是否已配置OP来使用以下方式对ID令牌进行签名:

  • HS256(对称密钥算法);或
  • RS256(非对称密钥算法)

请在上下文中查看此线程上可接受的答案: RS256 vs HS256: What's the difference?

在前一种情况下(HS256),您的OP用私钥对ID令牌进行签名。并且您的RP必须使用相同的私钥来验证签名。 (注意:您可能知道,保持此共享私钥的安全至关重要。)如果是您的环境,则商用RP可能具有允许您上传或复制/粘贴私钥的配置选项。 / p>

在后一种情况下(RS256),您的OP用私钥对ID令牌签名,但您的RP使用其公钥对应者验证签名。如果这是您的环境,则商用RP可能具有一个配置选项来指定“ jwks_uri”和“ kid”。这些分别指的是公开密钥发布到的URI及其密钥ID。