2012-07-30 70 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