2016-11-29 11 views
0

以下は、Javaで生成する必要があるXML署名キーインフォメーションです。Java XML WS-Security署名。 X.509トークンプロファイル。セキュリティトークン参照を追加する

<ds:KeyInfo Id="idhere"> 
<wsse:SecurityTokenReference wsse11:TokenType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1" wsu:Id="idhere" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd"> 
<wsse:Reference URI="#X509" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509PKIPathv1"/> 
        </wsse:SecurityTokenReference> 
       </ds:KeyInfo> 

ここまでは、Javaのこれまでのところまでのところまでです。鍵情報にセキュリティトークン参照を追加するにはどうすればよいですか?

KeyInfoFactory kif = fac.getKeyInfoFactory(); 

KeyInfo ki = kif.newKeyInfo(Collections.singletonList(Whatgoeshere?)); 


XMLSignature signature = fac.newXMLSignature(si, ki,null,"id-2FC89B275743456788xtdcfyvg9014",null); 

お気軽にお問い合わせください。ありがとうございました!

+0

あなたがこれを理解しましたか? –

答えて

0

今日私は自分自身で少し苦労していましたが、解決策を見つけました。セキュリティトークンの参照を生成するために、私はjavax.xml.cryptoのほかに追加のライブラリ、すなわちorg.apache.ws.securityを使用しました。この目的は、必要なkeyinfoを持つセキュリティトークン参照を生成し、keyinfofactoryを使用してkeyinfoオブジェクトを作成することです。

は、例を参照してください:以下のように

import org.apache.ws.security.message.token.DOMX509Data; 
    import org.apache.ws.security.message.token.DOMX509IssuerSerial; 
    import org.apache.ws.security.message.token.SecurityTokenReference; 

    import javax.xml.crypto.XMLStructure; 
    import javax.xml.crypto.dom.DOMStructure; 
    import javax.xml.crypto.dsig.keyinfo.*; 

    SecurityTokenReference secRef = new SecurityTokenReference(doc); 
       secRef.addWSSENamespace(); 

    String issuer = "issuer information"; 
    BigInteger serialNumber = new BigInteger("issuer serial number"); 
    DOMX509IssuerSerial domIssuerSerial = new DOMX509IssuerSerial(doc, issuer, serialNumber); 
    DOMX509Data domX509Data = new DOMX509Data(doc, domIssuerSerial); 
    secRef.setX509Data(domX509Data); 

    XMLStructure structure = new DOMStructure(secRef.getElement()); 
    KeyInfo keyInfo = keyInfoFac.newKeyInfo(java.util.Collections.singletonList(structure), "key-info"); 

これはのKeyInfoが生成されます。

<ds:KeyInfo Id="key-info"> 
    <wsse:SecurityTokenReference> 
     <ds:X509Data> 
      <ds:X509IssuerSerial> 
       <ds:X509IssuerName>issuer information</ds:X509IssuerName> 
       <ds:X509SerialNumber>issuer serial number</ds:X509SerialNumber> 
      </ds:X509IssuerSerial> 
     </ds:X509Data> 
    </wsse:SecurityTokenReference> 
</ds:KeyInfo> 
関連する問題