2

我正在尝试使用 ADFS 设置依赖方 (SP)。ADFS 识别并响应没有签名的请求。但 ADFS 无法验证签名的 AuthRequest。我有一个证书导入到依赖方的“签名验证证书”部分,但该证书似乎没有用于依赖方请求的签名验证。

相反,它似乎使用“令牌解密”证书。我不明白这个证书的目的。有人可以解释一下这两个证书之间的区别以及如何用另一个自签名证书(DER 或 pem 格式)替换“令牌解密”证书吗?谢谢

仅供参考:发送到 ADFS 的示例 AuthnRequest

<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol" Destination="https://adfs-sj1.sjlab.local/adfs/ls/" ID="_422d0bb72b1120db737695464793dedf4ea8ddd2" IssueInstant="2012-07-30T21:52:47.501Z" Version="2.0">
    <saml2:Issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">spid</saml2:Issuer>
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        <ds:SignedInfo>
            <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
            <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
            <ds:Reference URI="#_422d0bb72b1120db737695464793dedf4ea8ddd2">
                <ds:Transforms>
                    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>S5b7PCF8WscoOX++EcpyjQNW4q0=</ds:DigestValue>
            </ds:Reference>
        </ds:SignedInfo>
        <ds:SignatureValue>g1PXYERi48Q/vGXNBPwZlteyihQmt3eo9+MIQlBdC8MqTsm8GdvE1Nq4osszEyprAK5Q6Uv5QV/UgctUWGV2hUxLc5bpXVwpaYaoywH0XPXArROR1EyGVz2g5YAjgGxpU0YbxJIk+2A1DblE0alYSK/88oHHcmpwp6dmgwmvfXcRA83DnVCeIZoKSPuNTqSLb6UKk+QxUABieuAb1ecsQmJsEjUXcrPq+RPL1+goNhC4/vbPatuK90ZyZe5CljwAtWXmqoBzWexxgWdzs4E9zIc/aQi/HFioGz0EnPiipgBjHRlV+Gv0iFV1dS++a24+F7H2NG6aZSGipcyj2kJMDg==</ds:SignatureValue>
    </ds:Signature>
</saml2p:AuthnRequest>
4

3 回答 3

7

好文章:AD FS 2.0:如何替换 SSL、服务通信、令牌签名和令牌解密证书

服务通信证书本质上是 IIS SSL 证书,具有相同的用途。

令牌解密证书用于与其他声明提供者进行通信。他们使用此证书的公钥加密令牌,而 ADFS 使用私钥解密。

Token-Signing 证书用于对发送给 RP 的令牌进行签名,以证明它确实来自 ADFS。

另外,当您在使用 FedUtil 时选择加密选项时,您会在 RP 端使用另一个证书来加密令牌。在这种情况下,它是双重加密的——SSL 加 RP 证书。

你的问题有点令人困惑。ADFS 始终对 RP 令牌进行签名。这不是可选的。你能澄清一下吗?

于 2012-07-31T19:44:41.577 回答
2
  • 服务通信— 此SSL证书用于加密所有客户端与AD FS服务器的连接。

  • 令牌签名——该x.509证书用于对发送给中继方的令牌进行签名,以证明它确实来自AD FS.

  • Token-Decrypting — 此x.509证书用于在传输层SAML再次加密之前加密令牌的有效负载。SSL它很少使用。

希望这能回答你原来的问题

于 2016-08-11T10:27:49.983 回答
0

仅当请求与依赖方签署而不是直接转到 Idp 时才使用依赖签名证书。而且在大多数情况下很少使用。

但是,当通过元数据 XML 创建依赖方时,它总是将签名证书配置为证书是元数据 XML 的一部分。

简而言之,与 ADFS 签名和解密证书相比,依赖方签名证书并不总是在纯 ADFS 场景中使用。您必须了解用户场景。

有很好的幻灯片https://www.slideshare.net/musre/understanding-claim-based-authentication来解释 IDP 和 RP

于 2017-08-08T04:10:43.210 回答