WSSSignature API를 사용한 디지털 서명 메소드
WSS API를 사용하여 생성기 바인딩에 대한 서명 정보를 구성할 수 있습니다. 요청 서명을 위한 클라이언트를 구성하려면 디지털 서명 메소드를 선택하십시오. 알고리즘 메소드에는 서명 및 정규화 메소드가 포함됩니다.
SOAP 메시지를 디지털로 서명하여 메시지 무결성을 보호하려면 생성기 서명 정보를 구성해야 합니다. 무결성은 디지털 서명을 나타내고, 기밀성은 암호화를 나타냅니다. 무결성은 네트워크를 통해 데이터를 전송할 때 데이터 수정의 위험성을 감소시킵니다.
어떤 메시지 파트가 디지털 서명되는지를 지정한 후에는 메시지를 디지털 서명하기 위해 어떤 메소드가 사용되는지를 지정해야 합니다.
메소드
- 서명 메소드
- 서명 알고리즘 메소드를 설정합니다.
- 정규화 메소드
- 정규화 알고리즘 메소드를 설정합니다.
서명 알고리즘
서명 알고리즘은 인증서를 서명하는 데 사용되는 알고리즘을 지정합니다. 서명 알고리즘은 서명 메소드의 URI(Uniform Resource Identifier)를 지정합니다. WebSphere® Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
알고리즘 | 설명 |
---|---|
WSSSignature.HMAC_SHA1 | 서명 알고리즘 HMAC의 URI: http://www.w3.org/2000/09/xmldsig#hmac-sha1 |
WSSSignature.RSA_SHA1(기본값) | 서명 알고리즘의 URI, RSA: http://www.w3.org/2000/09/xmldsig#rsa-sha1 |
WSS API의 경우 WebSphere Application Server는 DSA-SHA1 알고리즘(http://www.w3.org/2000/09/xmldsig#dsa-sha1)을 지원하지 않습니다.
요청 생성기 구성에 지정된 서명 알고리즘은 요청 이용자 구성에 지정된 알고리즘과 일치해야 합니다.
정규화 알고리즘
정규화 알고리즘은 정규화 메소드의 URI(Uniform Resource Identifier)를 지정합니다. WebSphere Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
알고리즘 | 설명 |
---|---|
WSSSignature.EXC_C14N(기본값) | 독점 정규화 알고리즘의 URI, EXC_C14N: http://www.w3.org/2001/10/xml-exc-c14n# |
WSSSignature.C14N | 포함 정규화 알고리즘 C14N의 URI: http://www.w3.org/2001/10/xml-c14n# |
요청 생성기 구성에 지정된 정규화 알고리즘은 요청 이용자 구성에 지정된 알고리즘과 일치해야 합니다.
다음 예제에서는 HMAC_SHA1을 서명 메소드로 지정하고 C14n을 정규 메소드로 지정하는 샘플 WSS API 코드를 제공합니다.
//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 canonicalization method
// DEFAULT: WSSSignature.EXC_C14N
sig.setCanonicalizationMethod(WSSSignature.C14N);
//set the signature method
// DEFAULT: WSSSignature.RSA_SHA1
sig.setSignatureMethod(WSSSignature.HMAC_SHA1);
//add the WSSSignature to the WSSGenerationContext
gencont.add(sig);
//generate the WS-Security header
gencont.process(msgcontext);