我们正在与商业客户一起测试自己的OIDC-IDP。 (我们无权访问客户端代码。)经过一些测试,客户端始终返回
OpenID Connect令牌验证失败:令牌签名无效(ID_TOKEN)
IDP遍布网络,客户端位于我们自己的网络中,中间有一个SSL断路器。我们在WWW中也有一个测试客户端,它工作正常。
我的问题是,OIDC客户端使用哪个证书来验证签名。是IDP网站的证书吗?如果是这样,是否可能是导致此错误的原因,所以ssl-breaker是否替换了原始证书?
答案 0 :(得分:0)
当您编写“ IdP”和“ client”时,我知道您指的是什么,但我想提一提,您通常会看到OIDC文档/讨论中使用的OP和RP。
您正在测试的商业RP指出ID令牌(即JWT)的签名验证失败。要专门回答您的问题,不,不是 not ,而是使用OP网站上的x509证书来验证签名。 RP用于验证签名的密钥取决于您是否已配置OP来使用以下方式对ID令牌进行签名:
请在上下文中查看此线程上可接受的答案: RS256 vs HS256: What's the difference?
在前一种情况下(HS256),您的OP用私钥对ID令牌进行签名。并且您的RP必须使用相同的私钥来验证签名。 (注意:您可能知道,保持此共享私钥的安全至关重要。)如果是您的环境,则商用RP可能具有允许您上传或复制/粘贴私钥的配置选项。 / p>
在后一种情况下(RS256),您的OP用私钥对ID令牌签名,但您的RP使用其公钥对应者验证签名。如果这是您的环境,则商用RP可能具有一个配置选项来指定“ jwks_uri”和“ kid”。这些分别指的是公开密钥发布到的URI及其密钥ID。