Com um aplicativo de servidor, o aplicativo age como o consumidor de
pedido e o gerador de resposta é implementado e executado no contêiner do Java™ EE (Java Platform, Enterprise Edition). O componente do consumidor para a Segurança de Serviços da Web armazena os tokens de segurança que ele recebe no Java Authentication and Authorization Service (JAAS) Subject do encadeamento atual. É possível recuperar os tokens de segurança do assunto do JAAS mantido
como um encadeamento local no contêiner.
Sobre Esta Tarefa
Essas informações aplicam-se apenas aos serviços da Web JAX-RPC (Java API for XML-based
RPC).
Os manipuladores de segurança são responsáveis por propagar os
tokens de segurança. Esses tokens de segurança são incorporados no cabeçalho de segurança SOAP e
transmitidos aos servidores de recebimento de dados. Os tokens de segurança são encapsulados nas classes
de implementação para a interface com.ibm.wsspi.wssecurity.auth.token.Token. É possível
recuperar os dados do token de segurança de um aplicativo de servidor ou de um
aplicativo cliente.
Conclua as seguintes etapas para
recuperar os dados do token de segurança de um aplicativo do servidor:
Procedimento
- Obtenha o Assunto do JAAS do encadeamento atual utilizando a classe do utilitário
WSSubject. Se você ativar a Segurança Java 2 no painel de segurança Global no
console administrativo, o acesso ao assunto do JAAS será negado, se o código do aplicativo não tiver
recebido a permissão javax.security.auth.AuthPermission("wssecurity.getCallerAsSubject"). A amostra de código a seguir mostra como obter o assunto JAAS:
javax.security.auth.Subject subj;
try {
subj = com.ibm.websphere.security.auth.WSSubject.getCallerSubject();
} catch (com.ibm.websphere.security.WSSecurityException e) {
…
}
- Obtenha um conjunto de credenciais privadas do Assunto. Para obter
informações adicionais, consulte a classe com.ibm.websphere.security.auth.WSSubject da API
(Application Programming Interface) por meio do centro de informações. Para acessar estas informações no
centro de informações, clique em Referência > Desenvolvedor > Documentação da API > Interfaces de
Programação de Aplicativo. No artigo Interfaces de Programação de Aplicativo,
clique em com.ibm.websphere.security.auth > WSSubject.
Atenção: Quando a Segurança Java
2 estiver ativada, pode ser necessário utilizar a classe AccessController para
evitar uma violação de segurança provocada pela operação de objetos de segurança no contêiner Java EE.
A amostra de código a seguir mostra como definir
a classe AccessController e obter as credenciais privadas:
Set s = (Set) AccessController.doPrivileged(new PrivilegedAction() {
public Object run() {
return subj.getPrivateCredentials();
}
});
- Procure a classe de token de destino nas credenciais privadas. Você pode procurar a classe de token de destino utilizando a interface
java.util.Iterator. O exemplo a seguir mostra como recuperar um token do nome do usuário com
um determinado valor de ID do token no cabeçalho de segurança. Também é possível utilizar outras
chamadas de métodos para recuperar tokens de segurança. Para obter informações adicionais,
consulte os documentos da API para a interface com.ibm.wsspi.wssecurity.auth.token.Token
ou as classes de tokens personalizados.
com.ibm.wsspi.wssecurity.auth.token.UsernameToken unt;
Iterator it = s.iterator();
while (it.hasNext()) {
Object obj = it.next();
if (obj != null &&
obj instanceOf com.ibm.wsspi.wssecurity.auth.token.UsernameToken) {
unt =(com.ibm.wsspi.wssecurity.auth.token.UsernameToken) obj;
if (unt.getId().equals(“…”)) break;
else continue;
}
}
Resultados
Quando concluir estas etapas, você terá recuperado os tokens de segurança
do Assunto JAAS em um aplicativo de servidor