2016-11-29 15 views
0

다음은 Java에서 생성해야하는 XML 서명 키 정보입니다.자바 XML WS- 보안 서명; 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> 

아래는 자바에서 지금까지 내가 가지고있는 거리입니다. 키 정보에 보안 토큰 참조를 어떻게 추가합니까?

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.cryptoorg.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>