2016-07-26 18 views
0

私はSPとして働き、最近はIDPと統合する必要があります。 IDPの文書では、私にhttp postの応答を送るでしょう。応答には、ds:SignatureValueとds:X509Certificateがあります。このSAML: Why is the certificate within the Signature?のようなスレッドがあります。スレッドは、そのメッセージが誰であるかを確認する方法にのみ答えます。SAMLの信頼性確認

1)ds:SignatureValueとds:X509Certificateの意味は何ですか?

2)どのように応答するのが私のIDPからですか?ハッカーが私のhttp投稿アドレスを知っていれば、簡単に私のアプリケーションに同様のhttp投稿要求を送ることができます。 httpリクエストヘッダーにリファラーがあることがわかりました。私のIDPからのリクエストを確認するのに安全ですか?

3)IDPはSP公衆署名証明書を送信するように頼んだので、そのフォーマットはDERでエンコードされたバイナリX.509(* .CER)でなければなりません。公的な公的な署名証明書を作成するには?

<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:Reference URI="#_2152811999472b94a0e9644dbc932cc3" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
    <ec:InclusiveNamespaces PrefixList="ds saml samlp xs" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
    </ds:Transform> 
    </ds:Transforms> 
    <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/> 
    <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">bW1Os7+WykqRt5h0mdv9o3ZF0JI=</ds:DigestValue> 
    </ds:Reference> 
</ds:SignedInfo> 
<ds:SignatureValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
SignatureValue </ds:SignatureValue> 
<ds:KeyInfo> 
    <ds:X509Data> 
    <ds:X509Certificate>X509 certification</ds:X509Certificate> 
    </ds:X509Data> 
</ds:KeyInfo> 
</ds:Signature> 

答えて

1
  1. 両方がXMLデジタル署名の要素です。 ds:SignatureValue要素には、Base64でエンコードされたSAMLレスポンスの実際の署名が含まれています。 ds:X509Certificate要素は、Base64でエンコードされた署名証明書(公開鍵 の鍵と他のIdPの情報を含みます)です。詳細はXML Digital Signature specificationをご確認ください。
  2. メタデータからIdP証明書を取得している可能性があります。 IdP 証明書を使用して着信SAML応答に署名し、 と比較して、IdPからds:SignatureValueを受け取りました。これらの2つの署名値が一致すると、IdPによって実際に送信されたSAML応答を保証することができます。 OpenSAML実装を使用してSPによってIdPから送信された応答を確認する方法については、codeを確認してください。 (注:これは私のリポジトリで、OpenSAMLを使用してSAML2.0実装を実装したものです)。
  3. 証明書を生成するには、さまざまなツールとライブラリが利用できます。 Javaのツール がKeytoolです。 Googleでチェックすると、多くの のチュートリアルが見つかります。
+0

@ Study Hard:私の答えを投票していただきありがとうございます。これが正しいと思われる場合は、それを最良の答えとして受け入れて、人々が質問とその答えを読みやすくするようにしてください。 – Zeigeist

+0

IdP証明書を使用して着信SAML応答に署名し、受信したds:IdPからSignatureValueと比較する方法を知りました。私はOpenSAMLを使用しており、アサーションと応答からシグネチャを得ることができます。 –

+0

ポイント2にコード参照を追加しました。確認してください。 – Zeigeist

関連する問題