Username 토큰
<UsernameToken> 요소를 사용하여 사용자 이름 및 선택적으로는 비밀번호 정보를 전파할 수 있습니다. 또한 이 토큰 유형을 사용하여 기본 인증 정보를 전달할 수도 있습니다. 사용자 이름과 비밀번호 모두 SOAP 메시지를 인증하는 데 사용됩니다.
OASIS: 웹 서비스 보안 UsernameToken 프로파일 1.0
사용자 이름을 포함하는 UsernameToken 요소가 ID 어설션에서 사용됩니다. ID 어설션에서는 신뢰 관계를 기반으로 사용자의 ID를 설정합니다.
다음 예는 <UsernameToken> 요소의 구문을 보여줍니다.
<wsse:UsernameToken wsu:Id="Example-1">
<wsse:Username>
...
</wsse:Username>
<wsse:Password Type="...">
...
</wsse:Password>
<wsse:Nonce EncodingType="...">
...
</wsse:Nonce>
<wsu:Created>
...
</wsu:Created>
</wsse:UsernameToken>
웹 서비스 보안 스펙은 다음 비밀번호 유형을 정의합니다.
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText (기본값)
- 이 유형은 사용자 이름의 실제 비밀번호입니다.
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest
- 이 유형은 사용자 이름의 비밀번호 다이제스트입니다. 이 값은 UTF8 인코딩 비밀번호의 base64 인코딩된 SHA1 해시 값입니다.
WebSphere® Application Server는 기본 PasswordText 유형을 지원합니다. 그러나, 대부분의 사용자 레지스트리 보안 정책이 애플리케이션 소프트웨어에 비밀번호를 노출하지 않기 때문에 비밀번호 다이제스트은 지원하지 않습니다.
<S:Envelope
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<S:Header>
...
<wsse:Security>
<wsse:UsernameToken>
<wsse:Username>Joe</wsse:Username>
<wsse:Password>ILoveJava</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</S:Header>
</S:Envelope>
OASIS: 웹 서비스 보안 UsernameToken 프로파일 1.1
WebSphere Application Server는 Username 토큰 프로파일 1.0 및 버전 1.1 표준을 둘 다 지원합니다.
WebSphere Application Server는 다음 기능을 지원하지 않습니다.
- Username 토큰 프로파일 스펙의 두 버전 모두에서 다이제스트 비밀번호 유형이 지원되지 않습니다.
- Username 토큰 프로파일 스펙의 두 버전 모두에서 비밀번호를 기반으로 하는 키 파생이 지원되지 않습니다.
관리 콘솔을 사용하여 UsernameToken을 구성하는 데 정책 세트를 사용할 수 있습니다. 또한, 웹 서비스 보안 API를 사용하여 SOAP 메시지에 Username 토큰을 첨부할 수 있습니다. 다음 그림은 JAX-RPC 및 JAX-WS 프로그래밍 모델에 대한 Username 토큰의 작성 및 유효성 검증을 설명합니다.
JAX-RPC에서 JAAS 로그인 모듈 및 JAAS CallbackHandler를 사용한 Username 토큰 작성 및 유효성 검증

JAX-WS에서 JAAS 로그인 모듈 및 JAAS CallbackHandler를 사용한 Username 토큰 작성 및 유효성 검증

생성기측에서 Username 토큰은 JAAS LoginModule을 사용하여 작성되며 인증 데이터를 전달하기 위해 JAAS CallbackHandler를 사용하여 작성됩니다. JAAS LoginModule은 UsernameToken 오브젝트를 작성하고 이를 웹 서비스 보안 런타임으로 전달합니다.
이용자측에서는, Username 토큰 XML 형식이 유효성 검증 또는 인증을 위해 JAAS LoginModule로 전달되며, JAAS CallbackHandler가 웹 서비스 보안 런타임에서 JAAS LoginModule로 인증 데이터를 전달하는 데 사용됩니다. 토큰이 인증된 후 UsernameToken 오브젝트가 작성되고 웹 서비스 보안 런타임으로 전달됩니다.
다음 예제는 Username 토큰을 작성하기 위한 샘플 코드를 제공합니다.
WSSFactory factory = WSSFactory.getInstance();
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Attach the username token to the message.
UNTGenerationCallbackHandler ugCallbackHandler =
newUNTGenerationCallbackHandler("alice", "ecila");
SecurityToken ut = factory.newSecurityToken(ugCallbackHandler,
UsernameToken.class);
gencont.add(ut);
// Generate the WS-Security header
gencont.process(msgctx);