你好,我有這樣的XML從我的IDP一個SAML2響應:OpenSAML如何檢查SAML Response(簽名/證書)是否真的來自我的IDP?
<Assertion ID="_97031c65-0139-4047-a416-9495df5d6ed7"
IssueInstant="2016-10-26T07:45:43.438Z" Version="2.0"
xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
<Issuer>
</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/2001/04/xmldsig-more#rsa-sha256" />
<ds:Reference URI="#_97031c65-0139-4047-a416-9495df5d6ed7">
<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>
KMaF...
</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
FHdZ....
</ds:SignatureValue>
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>
MII....
</X509Certificate>
</X509Data>
</KeyInfo>
</ds:Signature>
....
現在我要檢查如果響應是從我的IDP有效響應。如何才能做到這一點? (我正在使用OpenSAML 3.x java) 僅僅對簽名和證書進行字符串比較就足夠了嗎?
我也有一個MetadataDocument.XML和來自我的IDP(Azure)的憑證信息。
相關:
SAML 2.0 - How to verify the sender certificate?
OpenSAML (2.0) Signature validation not working
嗨,我爲此使用OpenSAML。我已經獲得了登錄功能,但由於某些情況和安全原因,我們需要驗證從IDP的登錄中獲取的SAML響應,不僅在我們的用戶代理中,而且在資源請求時也在我們的資源服務器上。 – Gobliins
真正的SAML登錄由流星賬戶執行。我們的想法是將響應和請求一起發送到我們的資源服務器,並執行手動OpenSAML驗證,以檢查請求是否來自可信來源(我們的用戶代理)。 – Gobliins
我不知道我跟着你。我不熟悉流星帳戶是什麼。要說登錄功能沒有檢查簽名,就像說用戶名/密碼登錄工作,但你不檢查密碼是否正確。你將不得不編輯原始問題,以包括你的設置和你想做什麼,否則它很難幫你 –