2017-06-15 63 views
3

我正在嘗試設置IdentityServer以使用ADFS進行身份驗證。流程將是:IdentityServer和ADFS

用戶 - >自定義應用程序 - > IS - > ADFS

我設置幾乎所有的東西,但我被困在IS和ADFS之間的通信。用戶似乎在ADFS成功登錄,但我得到一個錯誤:

ID4037:驗證簽名所需的密鑰無法從下面的安全密鑰標識符來解決「SecurityKeyIdentifier

當我回來到IS。

很明顯,令牌簽署證書在一方或另一方存在問題。我試過找不到解釋不同證書之間關係的文檔。

現在我在簽署令牌(使用IdentityServerOptions的SigningCertificate屬性進行設置)中有一個自簽名證書,並且我在ADFS中配置了AD證書來簽署令牌。

有沒有關於如何正確地做到這一點的指導或建議?兩者應該是相同的還是應該配置別的東西才能使其工作?

編輯 使用Fiddler我可以看到裏面的一切ADFS運行良好並在結果公佈於IdentityServer誤差。張貼在wresult PARAM的XML是:

<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust"> 
    <t:Lifetime> 
    <wsu:Created xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T12:25:31.148Z</wsu:Created> 
    <wsu:Expires xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2017-06-20T13:25:31.148Z</wsu:Expires> 
    </t:Lifetime> 
    <wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"> 
    <wsa:EndpointReference xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:Address>urn:identityServer</wsa:Address> 
    </wsa:EndpointReference> 
    </wsp:AppliesTo> 
    <t:RequestedSecurityToken> 
    <saml:Assertion MajorVersion="1" MinorVersion="1" AssertionID="_fd1a14cd-4d18-407b-97d4-9f9dfcacd29a" Issuer="http://ssosrv.mydomain.com/adfs/services/trust" IssueInstant="2017-06-20T12:25:31.148Z" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"> 
     <saml:Conditions NotBefore="2017-06-20T12:25:31.148Z" NotOnOrAfter="2017-06-20T13:25:31.148Z"> 
     <saml:AudienceRestrictionCondition> 
      <saml:Audience>urn:identityServer</saml:Audience> 
     </saml:AudienceRestrictionCondition> 
     </saml:Conditions> 
     <saml:AttributeStatement> 
     <saml:Subject> 
      <saml:NameIdentifier>[email protected]</saml:NameIdentifier> 
      <saml:SubjectConfirmation> 
      <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> 
      </saml:SubjectConfirmation> 
     </saml:Subject> 
     <saml:Attribute AttributeName="emailaddress" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>[email protected]</saml:AttributeValue> 
     </saml:Attribute> 
     <saml:Attribute AttributeName="name" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>Name Surname</saml:AttributeValue> 
     </saml:Attribute> 
     <saml:Attribute AttributeName="upn" AttributeNamespace="http://schemas.xmlsoap.org/ws/2005/05/identity/claims"> 
      <saml:AttributeValue>[email protected]</saml:AttributeValue> 
     </saml:Attribute> 
     </saml:AttributeStatement> 
     <saml:AuthenticationStatement AuthenticationMethod="urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport" AuthenticationInstant="2017-06-20T12:25:31.039Z"> 
     <saml:Subject> 
      <saml:NameIdentifier>[email protected]</saml:NameIdentifier> 
      <saml:SubjectConfirmation> 
      <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:bearer</saml:ConfirmationMethod> 
      </saml:SubjectConfirmation> 
     </saml:Subject> 
     </saml:AuthenticationStatement> 
     <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/2001/04/xmldsig-more#rsa-sha256" /> 
      <ds:Reference URI="#_fd1a14cd-4d18-407b-97d4-9f9dfcacd29a"> 
      <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/2001/04/xmlenc#sha256" /> 
      <ds:DigestValue>6CeXXXXXXXXXXXXXXXXXXXX=</ds:DigestValue> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>q9hJBFFFFFFFFFFFFFFFFFFFF==</ds:SignatureValue> 
     <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> 
      <X509Data> 
      <X509Certificate>MIIFnzXXXXXXXXXXXXXXXXXXXX</X509Certificate> 
      </X509Data> 
     </KeyInfo> 
     </ds:Signature> 
    </saml:Assertion> 
    </t:RequestedSecurityToken> 
    <t:TokenType>urn:oasis:names:tc:SAML:1.0:assertion</t:TokenType> 
    <t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType> 
    <t:KeyType>http://schemas.xmlsoap.org/ws/2005/05/identity/NoProofKey</t:KeyType> 
</t:RequestSecurityTokenResponse> 

謝謝 阿爾伯特

回答

5

解決了它。它與ADFS集成無關,但我如何在Identity Server中設置聯合身份驗證。我使用了兩個聯合身份驗證身份提供程序:這一個使用ADFS,另一個使用WinAuth。沒有回調,來自ADFS的響應由WinAuth處理,所以我爲它們中的每一個配置了不同的回調,並且它正在工作。

2

從內存:

  • 您需要將IS證書.CER格式轉換。
  • 在mmc中,右鍵單擊證書和「所有任務」/「導出」。
  • 點擊導出嚮導選擇: 「不,不要導出私鑰」。 「DER編碼二進制X.509(.CER)」。
  • 選擇要導出到的文件名和「保存」。
  • 查看選項和「完成」。
  • 在ADFS嚮導中,將.cer文件導入到「證書」選項卡中。
+0

我確實改變了它在ADFS和IS中使用相同的證書,我仍然收到錯誤。無論如何,我正在尋找更多的文檔/指南,而不是針對可能有效的特定解決方案,但我不知道爲什麼。 – Albert

+0

請參閱本文的底部:https://social.technet.microsoft.com/wiki/contents/articles/1420。ad-fs-2-0-id4037-the-key-needed-verify-the-signature-could-be-resolved-the-following-security-key-identifier.aspx - 您可能需要禁用撤銷檢查 – stombeur

+0

@stombeur我曾嘗試過,但仍然得到相同的錯誤... – Albert