2017-10-05 15 views
0

私は以下のSpring Security 1.0.2.RELEASEサンプルコードを使用して、JSPのSAMLアサーションをJSPから取得しています(下の最後のコードサンプル)。私はサンプルアプリケーションのようにそれをやろうとしています。私は、私のsp.xmlとidp.xmlがPingIdentityで正しく動作していることがわかります.PingIdentityはログに整形式のSAMLアサーションを示しています(下記のPingログアサーションを参照)。しかし、下記の "token"変数(下記のSpringコードサンプルを参照)を見ると、署名値とダイジェスト値が欠落しています。 ...タグはまだOK SAML2アサーションのように見えますが... ...しかし、実際にはこれらの値をpingが提供したにもかかわらず、署名のようないくつかの本質的な値があります。ピングからvaiable ...春のセキュリティSAML拡張、SAMLアサーション絡み、署名紛失

奇妙な、IDが一致し、また、以下に含まれていない、春へのPingからの役割の多くは正しくSAMLアサーション「トークン」に表示されます。

2017-10-05 12:43:58,119 tid:fv0iEyiXUF5yhlB_-cZnExX0YTc DEBUG [org.sourceid.saml20.bindings.LoggingInterceptor] Transported Response. OutMessageContext: 
OutMessageContext 
XML: <samlp:Response Version="2.0" ID="F5FQ26j6o6VT0zNdZ4r87pDw8NT" IssueInstant="2017-10-05T10:43:58.072Z" InResponseTo="a1786b4f3g394b812f9edd3ca26c80g" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"> 
    <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">app1</saml:Issuer> 
    <samlp:Status> 
    <samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> 
    </samlp:Status> 
    <saml:Assertion ID="VmzXJoyk.9mxifAuyt4.WWi3F1O" IssueInstant="2017-10-05T10:43:58.103Z" Version="2.0" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> 
    <saml:Issuer>app1</saml: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="#VmzXJoyk.9mxifAuyt4.WWi3F1O"> 
      <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>ZnT3MW5R1Nm9y/Pe8Br5m1BXXbXTc0VWeIIkUGyJaOI=</ds:DigestValue> 
     </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue>bHPhuD09Q2az7TxBvJo2LavF2N5YaroZoCNZzG17iJmSVycv0Gfq3liSKb2yIPhY0I9WVr8WwM/N 
dw720okdsEuIbzuy/NYOlOCB3sFaZ6GmmU0FruUHyqjTjGOxHA6504KpvVQjEg3D5iJeNTovKtQR 
tICvKjT4Hv9qTE3tg1viWTnih3xFM++gPffHhfKwWHjXMJTpyy5oQaviYUlQw7Elgv0cyN9ni/jJ 
lFWC0QJJYXK8BwDdyY4MOqvTz8F4DgBnkwAQ+TnPUwuCRDL0ckW84knrWAh4qz18bQzVjSBpT+AI 
7i6NiQ/1L/YnoRvRJ3EttAKUTEO3YrtkJPxcxQ==</ds:SignatureValue> 
    </ds:Signature> 
    <saml:Subject> 

春から( )以下 "トークン" の値:

<?xml version="1.0" encoding="UTF-8"?> 
<saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="VmzXJoyk.9mxifAuyt4.WWi3F1O" IssueInstant="2017-10-05T10:43:58.103Z" Version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <saml:Issuer>app1</saml: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="#VmzXJoyk.9mxifAuyt4.WWi3F1O"> 
       <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#"> 
         <ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="xs"/> 
        </ds:Transform> 
       </ds:Transforms> 
       <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
       <ds:DigestValue/> 
      </ds:Reference> 
     </ds:SignedInfo> 
     <ds:SignatureValue/> 
    </ds:Signature> 

スプリングセキュリティコード:

<%@ page import="org.springframework.security.saml.SAMLCredential"%> 
<%@ page import="org.springframework.security.core.context.SecurityContextHolder"%> 
<%@ page import="org.springframework.security.core.Authentication"%> 
<%@ page import="org.opensaml.saml2.core.Attribute"%> 
<%@ page import="org.springframework.security.saml.util.SAMLUtil"%> 
<%@ page import="org.opensaml.xml.util.XMLHelper"%> 
(...) 
    Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); 
    SAMLCredential credential = (SAMLCredential) authentication.getCredentials(); 
    (...)         
    String token = XMLHelper.nodeToString(SAMLUtil.marshallMessage(credential.getAuthenticationAssertion())); 
+0

FYI、春のセキュリティSAMLアプリケーションの抜粋で "資格" 変数への参照で、credential.getAuthenticationAssertion()。getSignature( )は署名algoythemを持つオブジェクトを返しますが、Signatureオブジェクトの他のすべてのメンバーはnull(keyInfo、keyLengthなど)です。そして、xmlSignatureは利用できません。おそらく、私がopenSAMLで読んでいるAPIはSpring Securityと同じバージョンではありません。 – tom

答えて

0

これを追加しました私の署名を取り戻しました。私のユーザの誤りを知っている人は何ですか?春のセキュリティSAML Extenionファイルに..added

<bean id="webSSOprofileConsumer" class="org.springframework.security.saml.websso.WebSSOProfileConsumerImpl"> 
    <property name="releaseDOM" value="false" /> 
</bean> 

"securityContext.xml"