WSSSignPart API를 사용한 서명된 파트 메소드
WSS API를 사용하여 생성기 바인딩에 대한 서명된 파트 정보를 구성할 수 있습니다. 이 알고리즘에는 요약 및 변환 메소드가 포함됩니다.
서명된 파트 및 키 정보를 구성하여 메시지 무결성을 보호할 수 있습니다. 무결성은 디지털 서명을 나타내고, 기밀성은 암호화를 나타냅니다. 무결성은 네트워크를 통해 데이터를 전송할 때 데이터 수정의 위험성을 감소시킵니다.
메소드
서명된 파트에 사용되는 메소드는
다음과 같습니다.
- 요약 메소드
- 요약 알고리즘 메소드를 설정합니다.
- 변환 알고리즘
- 변환 알고리즘 메소드를 설정합니다.
요약 알고리즘
요소 내에 지정된 요약 메소드 알고리즘은 요소에서 사용됩니다. WebSphere® Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
요약 메소드 | 설명 |
---|---|
WSSSignPart.SHA1(기본값) | 요약 알고리즘 SHA1의 URI: http://www.w3.org/2000/09/xmldsig#sha1 |
WSSSignPart.SHA256 | 요약 알고리즘 SHA256의 URI: http://www.w3.org/2001/04/xmlenc#sha256 |
WSSSignPart.SHA512 | 요약 알고리즘 SHA256의 URI: http://www.w3.org/2001/04/xmlenc#sha512 |
변환 알고리즘
요소 내에 지정된 변환 메소드 알고리즘이 요소에서 사용됩니다. WebSphere Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
요약 메소드 | 설명 |
---|---|
WSSSignPart.TRANSFORM_ENVELOPED_SIGNATURE | 변환 알고리즘인 엔벨로프 서명의 URI: http://www.w3.org/2000/09/xmldsig#enveloped-signature |
WSSSignPart.TRANSFORM_STRT10 | 변환 알고리즘 STR-Transform의 URI: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#STR-Transform |
WSSSignPart.TRANSFORM_EXC_C14N(기본값) | 변환 알고리즘 Exc-C14N의 URI: http://www.w3.org/2001/10/xml-exc-c14n# |
WSSSignPart.TRANSFORM_XPATH2_FILTER | 변환 알고리즘인 XPath2 필터의 URI: http://www.w3.org/2002/06/xmldsig-filter2 |
변환 알고리즘은 <Transform> 요소 내에 지정되며 서명된 파트의 변환 알고리즘을 지정합니다.
WSS
API의 경우 WebSphere Application Server가 다음
변환 알고리즘을 지원하지 않습니다.
- http://www.w3.org/TR/1999/REC-xpath-19991116
- http://www.w3.org/2002/07/decrypt#XML
다음 예제에서는 서명 및 서명된 파트 지정, 서명 키 설정 및 STR-Transform 변환 알고리즘을 서명된 파트로 추가하기 위한 샘플 WSS API 코드를 제공합니다.
//get the message context
Object msgcontext = getMessageContext();
//generate WSSFactory instance
WSSFactory factory = WSSFactory.getInstance();
//generate WSSGenerationContext instance
WSSGenerationContext gencont = factory.newWSSGenerationContext();
//generate callback handler
X509GenerateCallbackHandler callbackHandler = new
X509GenerateCallbackHandler(
"",
"dsig-sender.ks",
"jks",
"client".toCharArray(),
"soaprequester",
"client".toCharArray(),
"CN=SOAPRequester, OU=TRL, O=IBM, ST=Kanagawa, C=JP",
null);
//generate the security token used to the signature
SecurityToken token = factory.newSecurityToken(X509Token.class,
callbackHandler);
//generate WSSSignature instance
WSSSignature sig = factory.newWSSSignature(token);
//set the part specified by WSSSignPart
WSSSignPart sigPart = factory.newWSSSignPart();
//set the part specified by WSSSignPart
sigPart.setSignPart(WSSSignature.BODY);
//set the digest method specified by WSSSignPart
sigPart.setDigestMethod(WSSSignPart.SHA256);
//set the transform method specified by WSSSignPart
sigPart.addTransform(WSSSignPart.TRANSFORM_STRT10);
//set the part specified by WSSSignPart
sig.addSignPart(sigPart);
//add the WSSSignature to the WSSGenerationContext
gencont.add(sig);
//generate the WS-Security header
gencont.process(msgcontext);