WSSVerification API를 사용한 서명 검증 메소드
이용자 바인딩에 대한 WSS API를 사용하여 서명 또는 서명 정보를 확인할 수 있습니다. 서명 및 정규화 알고리즘 메소드가 생성기 바인딩에 사용됩니다. WSSVerification API는 com.ibm.websphere.wssecurity.wssapi.verification 패키지에 제공되어 있습니다.
메시지 무결성을 보호하기 위해 이용자 서명 정보를 구성하려면 먼저 디지털로 서명한 후 SOAP 메시지에 대한 서명을 확인합니다. 무결성은 디지털 서명을 나타내고, 기밀성은 암호화를 나타냅니다. 무결성은 네트워크를 통해 데이터를 전송할 때 데이터 수정의 위험성을 감소시킵니다.
메소드
- 서명 메소드
- 서명 알고리즘 메소드를 설정합니다.
- 정규화 메소드
- 정규화 알고리즘 메소드를 설정합니다.
요청 생성기 구성에 지정된 알고리즘은 응답 이용자 구성에 지정된 알고리즘과 일치해야 합니다.
서명 알고리즘
서명 알고리즘은 인증서를 서명하는 데 사용되는 서명 검증 알고리즘을 지정합니다. 서명 알고리즘은 서명 검증 메소드의 URI(Uniform Resource Identifier)를 지정합니다. WebSphere® Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
알고리즘 | 설명 |
---|---|
WSSVerification.HMAC_SHA1 | 서명 알고리즘 HMAC의 URI: http://www.w3.org/2000/09/xmldsig#hmac-sha1 |
WSSVerification.RSA_SHA1(기본값) | 서명 알고리즘의 URI, RSA: http://www.w3.org/2000/09/xmldsig#rsa-sha1 |
WebSphere Application Server는 DSA-SHA1용 알고리즘을 지원하지 않습니다(http://www.w3.org/2000/09/xmldsig#dsa-sha1).
정규화 알고리즘
정규화 알고리즘은 정규화 메소드의 URI(Uniform Resource Identifier)를 지정합니다. WebSphere Application Server는 다음과 같이 미리 구성된 알고리즘을 지원합니다.
알고리즘 | 설명 |
---|---|
WSSVerification.C14N | 포함 정규화 알고리즘 C14N의 URI: http://www.w3.org/2001/10/xml-c14n# |
WSSVerification.EXC_C14N(기본값) | 독점 정규화 알고리즘의 URI, EXC_C14N: http://www.w3.org/2001/10/xml-exc-c14n# |
다음 예제는 서명 검증을 위한 X.509 토큰 보안 토큰을 지정하는 샘플 WSS API 코드를 제공합니다.
WSSFactory factory = WSSFactory.getInstance();
WSSConsumingContext concont = factory.newWSSConsumingContext();
// X509ConsumeCallbackHandler
X509ConsumeCallbackHandler callbackHandler = new
X509ConsumeCallbackHandler("dsig-receiver.ks",
"jks",
"server".toCharArray(),
certList,
java.security.Security.getProvider("IBMCertPath")46 );
// Set the verification component
// DEFAULT verification parts: Body, WS-Addressing header, and Timestamp
// DEFAULT data encryption algorithm: RSA-SHA1
// DEFAULT digest algorithm: SHA1
// DEFAULT canonicalization algorithm: exc-c14n
WSSVerification ver = factory.newWSSVerification(X509Token.class,
callbackhandler);
concont.add(ver);
// Validate the WS-Security header
concont.validate(msgctx);