【问题标题】:OIDC signature verificationOIDC 签名验证
【发布时间】:2019-07-25 12:56:29
【问题描述】:

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

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

IDP 在网络中,客户端在我们自己的网络中,中间有一个 SSL 断路器。我们有一个测试客户端,也在 WWW 中,运行良好。

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

【问题讨论】:

    标签: verification xml-signature openid-connect


    【解决方案1】:

    关于 OIDC 术语的注意事项

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

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

    背景和建议

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

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

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

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

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

    【讨论】:

    • 对于 HS256,您可能会将其称为私钥,从而使某些人感到困惑。当我阅读“私钥”时,我想到了公钥加密。我会使用“密钥”或“共享密钥”。
    猜你喜欢
    • 2020-05-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2011-08-01
    • 2011-08-18
    相关资源
    最近更新 更多