2012-07-30 95 views
1

我正在尝试使用ADFS设置依赖方(SP)。 ADFS识别并响应未经签名的请求。但ADFS无法验证已签名的AuthRequest。我在依赖方的“签名验证证书”部分输入了证书,但该证书似乎不用于对依赖方的请求进行签名验证。Adfs:令牌解密证书和依赖方签名验证证书之间的区别

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

供参考:样本AuthnRequest发送到ADFS

<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> 

回答

6

好文章:AD FS 2.0: How to Replace the SSL, Service Communications, Token-Signing, and Token-Decrypting Certificates

服务通信证书基本上是IIS SSL证书并且用于相同的目的。

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

令牌签名证书用于签署发送给RP的令牌,以证明它确实来自ADFS。

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

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

+0

感谢您的回答。我假定ADFS是索赔提供者,它会生成安全令牌(Saml Assertion)返回给依赖方。但你似乎提到了除ADFS以外的其他人是索赔提供者。你是否声称ActiveDirectory是声明提供程序和ADFS作为STS(安全令牌服务),它可以从ActiveDirectory的声明中生成安全令牌? – Rag 2012-08-02 08:26:31

+0

另外我遇到的问题是,依赖方用SHA1发送一个签名的AuthnRequest。但是从事件日志中,我发现它期望消息签名具有SHA256。我无法弄清楚体系结构中的组件,并最终用依赖方证书替换了“令牌解密证书”。这可能是错误的,ADFS继续抱怨[不同的问题](http://social.msdn.microsoft.com/Forums/en-US/Geneva/thread/9d6dd5a9-6f9a-4310-b2a3-b5f10018d737/# 9d6dd5a9-6f9a-4310-b2a3-b5f10018d737)。 – Rag 2012-08-02 08:32:27

1
  • 业务通信 - 这SSL证书来加密所有客户端连接到服务器AD FS

  • 令牌签名 - 这x.509证书用于签署发送到中继方证明它确实是从AD FS附带的令牌。

  • 令牌解密 - 用于将SAML令牌的有效载荷之前其加密再次在SSL传输层加密这x.509证书。它很少使用。

希望这回答了你原来的问题,只有当请求依赖方,而不是直接去IDP签署

0

依托签名证书习惯。在大多数情况下它很少使用。

但是,当通过metadata-xml创建依赖方时,它始终具有配置的签名证书,因为证书是metadata-xml的一部分。

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

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