Token do Nome do Usuário
É possível usar o elemento <UsernameToken> para propagar um nome de usuário e, opcionalmente, informações de senha. Além disso, pode-se usar esse tipo de token para transportar informações de autenticação básica. Um nome de usuário e uma senha são usados para autenticar a mensagem SOAP.
OASIS: Web Services Security UsernameToken Profile 1.0
Um elemento UsernameToken que contém o nome do usuário é utilizado na asserção de identidade. A asserção de identidade estabelece a identidade do usuário com base no relacionamento confiável.
O seguinte exemplo mostra a sintaxe do elemento <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>
A especificação do Web Services Security define os seguintes tipos de senha:
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText (padrão)
- Este tipo é a senha real para o nome do usuário.
- http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest
- Este tipo é a compilação da senha para o nome do usuário. O valor é um valor de hash SHA1 codificado em base64 da senha codificada em UTF8.
O WebSphere Application Server suporta o tipo PasswordText padrão. No entanto, ele não suporta a compilação de senha porque a maioria dos critérios de segurança de registro de usuários não expõe a senha para o software aplicativo.
<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: Web Services Security UsernameToken Profile 1.1
O WebSphere Application Server suporta os padrões Username Token Profile 1.0 e Versão 1.1.
O WebSphere Application Server não suporta as seguintes funções:
- Nas duas versões da especificação Username Token Profile, o tipo de senha digest não é suportado
- Nas duas versões da especificação Username Token Profile, a derivação de chave baseada em uma senha não é suportada.
É possível usar os conjuntos de política para configurar o UsernameToken, usando o console administrativo. Além disso, é possível usar as APIs de Web Services Security para anexar o token Username à mensagem SOAP. A figura a seguir descreve a criação e a validação do token Username para os modelos de programação JAX-RPC e JAX-WS
Criando e Validando o Token Username Usando o JAAS Login Module e o JAAS CallbackHandler em JAX-RPC

Criando e Validando o Token Username Usando o JAAS Login Module e o JAAS CallbackHandler em JAX-WS

No gerador, o token Username token é criado usando o JAAS LoginModule e o JAAS CallbackHandler para transmitir os dados de autenticação. O JAAS LoginModule cria o objeto UsernameToken e o transmite ao tempo de execução do Web Services Security.
No lado do consumidor, o formato XML do Token de Nome do Usuário é transmitido ao JAAS LoginModule para validação ou autenticação, e o JAAS CallbackHandler é usado para transmitir os dados de autenticação do tempo de execução do Web Services Security para o JAAS LoginModule. Depois que o token for autenticado, um objeto UsernameToken será criado e transmitido ao tempo de execução do Web Service Security.
O exemplo a seguir fornece o código de amostra para a criação de tokens Username:
WSSFactory factory = WSSFactory.getInstance();
WSSGenerationContext gencont = factory.newWSSGenerationContext();
// Anexar o token username à mensagem.
UNTGenerationCallbackHandler ugCallbackHandler =
newUNTGenerationCallbackHandler("alice", "ecila");
SecurityToken ut = factory.newSecurityToken(ugCallbackHandler,
UsernameToken.class);
gencont.add(ut);
// Gerar o cabeçalho WS-Security
gencont.process(msgctx);