WSSSignPart API를 사용하여 서명 파트 추가
구성의 정책 세트를 사용하지 않고도 WSS API(Web Services Security API)를 사용하여 SOAP 메시지를 보안 설정할 수 있습니다. 요청 생성기(클라이언트 측) 바인딩에 대해 서명할 파트를 구성하려면 WSSSignPart API를 사용하여 메시지의 무결성을 보호하고 요약 및 변환 알고리즘 메소드를 구성하십시오. WSSSignPart API는 com.ibm.websphere.wssecurity.wssapi.signature 패키지의 파트입니다.
시작하기 전에
WSS API를 사용하거나 관리 콘솔을 통해 정책 세트를 구성하여 서명 정보를 구성할 수 있습니다. 서명 정보를 사용하여 SOAP 메시지를 보안 설정하려면 다음 태스크 중 하나를 완료해야 합니다.
- 서명 정보를 구성합니다.
- 필요에 따라 서명 파트를 구성합니다.
이 태스크 정보
WebSphere® Application Server는 기본 생성기의 서명 정보를 사용하여 메시지의 파트에 서명하고 기존 알고리즘(예: SHA1 또는 TRANSFORM_EXC_C14N)이 있는 XML 디지털 서명을 사용합니다.
서명 정보는 생성된 메시지에 적용되는 무결성 제한조건을 지정합니다. 서명 파트는 메시지의 무결성을 보호하기 위해 사용됩니다. 메시지 무결성 보호를 위해 추가할 서명 파트를 지정할 수 있습니다.
다음 테이블은 디지털 서명 보안 제한조건(무결성)이 정의되는 경우의 필수 서명 파트를 표시합니다.
서명 파트 | 설명 |
---|---|
키워드 | 키워드를 사용하여 서명 파트를 추가합니다. WebSphere Application Server는 서명 파트에 대해 다음 키워드를 지원합니다.
|
xpath | XPath 표현식을 사용하여 필수 서명 파트를 추가합니다. |
header | QName이 지정한 헤더를 서명 파트로 추가합니다. |
timestamp | WSSTimestamp 오브젝트를 서명 파트로 추가합니다. 지정된 경우 시간소인 정보는 메시지가 생성되는 시간과 만료되는 시간도 지정합니다. |
생성기 측의 요청에 대한 메시지 보호에서 여러 메시지 파트를 지정할 수 있습니다. WSSSignPart를 사용하면 변환 알고리즘 추가, 요약 메소드 설정, 오브젝트를 대상으로 설정, 요소 및 SOAP 본문, WS-Addressing 헤더 및 시간소인 정보와 같은 서명 파트 여부 지정이 가능합니다.
서명 정보의 경우 특정 기본 동작이 발생합니다. WSSSignPart API를 사용하는 가장 간단한 방법은 기본 동작을 사용하는 것입니다(예제 코드 참조). 서명 파트 기본 동작에는 다음과 같은 동작이 있습니다.
서명 결정 | 기본 동작 |
---|---|
서명할 SOAP 메시지 파트 | WebSphere Application Server는 서명하고 메시지 보호에 사용할 다음 SOAP 메시지 파트를 지원합니다.
|
사용할 요약 파트 | 요약 알고리즘 메소드를 설정합니다. <DigestMethod> 요소 내에 지정되는 요약 메소드 알고리즘은 <SigningInfo> 요소에서 사용됩니다. WebSphere Application Server는
다음 사전 구성된 요약 메소드를 지원합니다.
|
사용할 변환 알고리즘 | 변환 메소드를 추가합니다. 변환 알고리즘은
<Transform> 요소 내에서 지정되고 서명에 대한 변환 알고리즘을 지정합니다. WebSphere Application Server는 다음 사전 구성된 변환 알고리즘을 지원합니다.
|
프로시저
결과
예
다음 예제는 WSSSignPart API에서 정의되는 모든 메소드를 사용하는 샘플 코드를 제공합니다.
// Get the message context
Object msgcontext = getMessageContext();
// Generate the WSSFactory instance (step: a)
WSSFactory factory = WSSFactory.getInstance();
// Generate WSSGenerationContext instance (step: b)
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 (step: c)
SecurityToken token = factory.newSecurityToken(X509Token.class, callbackHandler);
// Generate WSSSignature instance (step: d)
WSSSignature sig = factory.newWSSSignature(token);
// Set the part specified by WSSSignPart (step: e)
WSSSignPart sigPart = factory.newWSSSignPart();
// Set the part specified by WSSSignPart (step: f)
sigPart.setSignPart(WSSSignature.BODY);
// Set the digest method specified by WSSSignPart (step: g)
sigPart.setDigestMethod(WSSSignPart.SHA256);
// Set the transform method specified by WSSSignPart (step: h)
sigPart.setTransformMethod(WSSSignPart.TRANSFORM_STRT10);
// Add the part specified by WSSSignPart (step: i)
sig.addSignPart(sigPart);
// Add the WSSSignature to the WSSGenerationContext (step: j)
gencont.add(sig);
// Generate the WS-Security header (step: k)
gencont.process(msgcontext);
다음에 수행할 작업
WSSVerifyPart API를 사용하거나 관리 콘솔을 통해 정책 세트를 구성하여 이용자 측에서 서명 파트를 검증하십시오.