2011-12-05 19 views
2

私はこの種のSAMLアサーションを検証する必要があります。PerlでSAMLアサーションを検証するにはどうすればよいですか?

<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ID="Assertion-uuide824d44-0134-14b1-8e70-f85c710cb043" IssueInstant="2011-12-05T13:55:47Z" Version="2.0"> 
    <saml:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">MPS</saml:Issuer> 
     <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="uuide824d48-0134-18fe-b37b-f85c710cb043"> 
     <ds:SignedInfo> 
      <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></ds:CanonicalizationMethod> 
      <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod> 
      <ds:Reference URI="#Assertion-uuide824d44-0134-14b1-8e70-f85c710cb043"> 
       <ds:Transforms> 
        <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></ds:Transform> 
        <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"> 
         <xc14n:InclusiveNamespaces xmlns:xc14n="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs saml xsi"></xc14n:InclusiveNamespaces> 
        </ds:Transform> 
       </ds:Transforms> 
       <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod> 
       <ds:DigestValue>p02xKMDUYCR5xpppYUOQgsGBR5c=</ds:DigestValue> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>R9YHo8TK/wYkGkTP3QrnnM8U6TKf9vu+ElpRjDPgpg4O88oARZSb9OhlVn2sXJGEaQ5i0ORrofbKwOI+D/jFgz3Hz/g/h4yt2aqIFxLpOTFb448bDvFsHHWAoWc0DUPYf1AjW7Peu1ICSCdR3EaVLqtgdsUsVWoA7oXbWyAyVLM=</ds:SignatureValue> 
     <ds:KeyInfo> 
      <ds:KeyValue> 
       <ds:RSAKeyValue> 
        <ds:Modulus>iZ0D1X6rk8+ZwNBTVZt7C85m421a8A52Ksjw40t+jNvbLYDp/W66AMMYD7rB5qgniZ5K1p9W8ivM9WbPxc2u/60tFPg0e/Q/r/fxegW1K1umnay+5MaUvN3p4XUCRrfg79OvurvXQ7GZa1/wOp5vBIdXzg6i9CVAqL29JGi6GYU=</ds:Modulus> 
        <ds:Exponent>AQAB</ds:Exponent> 
       </ds:RSAKeyValue> 
      </ds:KeyValue> 
     </ds:KeyInfo> 
    </ds:Signature> 
    <saml:Subject> 
     <saml:NameID Format="urn:ibm:names:ITFIM:5.1:accessmanager">J006068</saml:NameID> 
     <saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"></saml:SubjectConfirmation> 
    </saml:Subject> 
    <saml:Conditions NotBefore="2011-12-05T13:45:47Z" NotOnOrAfter="2011-12-05T14:05:47Z"> 
     <saml:AudienceRestriction> 
      <saml:AttributeValue xsi:type="xs:string">1030</saml> 

私は、引数としてSAMLを取ることができ、それを検証することができCPAN上のライブラリを見つけられませんでした。

誰かが私の目標に到達する方法を教えてくれますか?

答えて

2

ネット:: SAML2 CPANモジュールは、決して...それを使用する方法を...

あなたが言う

「検証よりも良い後半、

http://metacpan.org/pod/Net::SAML2

+0

使用方法に関するドキュメントはありません:-( – Kerby82

3

[OK]を、ここであなたを助けるでしょう「あなたが「アサーションをチェックする」ことを意味するのか、「シグネチャを検証するのか」は分かりません。

my $assertion = Net::SAML2::Protocol::Assertion->new_from_xml( 
    xml => decode_base64($saml_response) 
); 

次に、アクセサーを介して作成されたアサーションオブジェクトの有効性をチェックするだけです。私はあなたがSAMLの意味論を理解していると仮定しています。署名を検証するために

、あなたは秘密鍵にアクセスする必要があります。

my $sig = Net::SAML2::XML::Sig->new({ key =>'/private.key' }); 
$sig->verify($xml); 

は、鍵(X509、本命)のソースのバリエーションのためのXML ::シグはperldocを参照してください。

Net :: SAML2は暗号化されたSAMLアサーション()をカバーしていませんが、あなたはそれについて聞かなかったことに注意してください。

関連する問題