私たちの IdP は Salesforce.com 組織です。SP はサードパーティの .Net アプリケーションです。開発中に、送信された SAML 応答を検証できないとサード パーティから報告がありました。
ComponentSpaceを使用して SAML 応答を検証することにしました。以下は私たちが試したことです:
// Load the certificate from the file: certInFile
// Load the SAML in an XMLElement: samlXml
// Retrieve the certificate from the SAML: certInSaml
Console.WriteLine("SAML is valid ? " + SAMLResponse.IsValid(samlXml));
Console.WriteLine("Is SAML signed? " + SAMLMessageSignature.IsSigned(samlXml));
Console.WriteLine("Certificate found in SAML is same as certificate file? " + certInFile.Equals(certInSaml));
Console.WriteLine("Validated SAML with certificate found in SAML" + SAMLMessageSignature.Verify(samlXml, certInSaml));
Console.WriteLine("Validated SAML with certificate file" + SAMLMessageSignature.Verify(samlXml, certInFile));
最後の2つを除いて、上記のすべてに当てはまります。そう:
- SAML は有効です
- SAML には有効な署名があります
- SAML の公開鍵証明書は、私たちが持っている証明書ファイルと同じです
- SAML は、証明書ファイルの秘密鍵でも SAML で送信された公開鍵でも署名されていません
3,4 から、Salesforce が署名しているが、別の証明書を使用しているが、応答で間違った公開鍵を送信していると結論付けることができますか?!
編集:サンプルSAMLはこちらhttp://pastebin.com/J8FTxnhJ
私は何が欠けていますか?