Desenvolvendo um interceptor customizado para associações de confiança
Você pode definir o método de classe do interceptor que deseja utilizar. O WebSphere Application Server suporta duas interfaces trust association interceptor: com.ibm.wsspi.security.TrustAssociationInterceptor e com.ibm.wsspi.security.tai.TrustAssociationInterceptor.
Antes de Iniciar
Procedimento
- Definir o método da classe do interceptor. O WebSphere Application Server fornece a interface interceptor Java™, com.ibm.wsspi.security.TrustAssociationInterceptor,
que define os seguintes métodos:
- public boolean isTargetInterceptor(HttpServletRequest req) cria WebTrustAssociationException;.
O método isTargetInterceptor determina se o pedido originou no servidor proxy associado ao interceptor. O código de implementação deve examinar o objeto do pedido de entrada e determinar se o servidor proxy que está encaminhando o pedido é um servidor proxy válido para este interceptador. O resultado deste método determina se o interceptador processa o pedido ou não.
- public void validateEstablishedTrust (HttpServletRequest req) cria WebTrustAssociationException;.
O método validateEstablishedTrust determina se o servidor proxy no qual o pedido originou é confiável ou não. Esse método é chamado depois do método isTargetInterceptor. O código de implementação deve autenticar o servidor proxy. O mecanismo de autenticação é específico do servidor proxy. Por exemplo, na implementação do produto para o servidor WebSEAL, o método recupera as informações básicas de autenticação do cabeçalho HTTP e valida as informações em relação ao registro do usuário usado peloWebSphere Application Server. Se as credenciais forem inválidas, o código criará a WebTrustAssociationException, indicando que o servidor de proxy não é confiável e o pedido a ser negado.
- public String getAuthenticatedUsername(HttpServletRequest
req) cria WebTrustAssociationException;.
O método getAuthenticatedUsername é chamado após a confiança ser estabelecida entre o servidor proxy e o WebSphere Application Server. O produto aceitou a autenticação do servidor proxy do pedido e agora deve autorizar o pedido. Para autorizar o pedido, o nome do solicitante original deve estar sujeito a uma política de autorização para determinar se o solicitante possui o privilégio necessário. O código de implementação para este método extrai o nome do usuário do cabeçalho do pedido HTTP e determina se esse usuário tem permissão para o recurso solicitado. Por exemplo, na implementação do produto para o servidor WebSEAL, o método procura um atributo iv-user no cabeçalho do pedido HTTP e extrai o ID do usuário associado a ele para autorização.
- public boolean isTargetInterceptor(HttpServletRequest req) cria WebTrustAssociationException;.
- Configurar o interceptor. Para tornar um interceptor configurável,
o interceptor deve estender com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor.
Implemente os seguintes métodos:
- public int init (java.util.Properties props);
- O método
init(Properties) aceita um objeto java.util.Properties que contém o conjunto de propriedades requerido para inicializar o interceptor.
Todas as propriedades definidas para um interceptor (utilizando o link
Propriedades Customizadas para o interceptor ou utilizando script) são enviadas a esse método. O interceptor poderá, então, utilizar essas propriedades para ser inicializado. Por exemplo, na implementação do produto para o servidor WebSEAL, esse método lê os hosts e portas de forma que um pedido recebido possa ser verificado se está vindo de hosts e portas confiáveis. Um valor de retorno igual a 0 significa que a inicialização do interceptor foi bem-sucedida.
Qualquer outro valor significa que a inicialização não foi bem-sucedida e o interceptor será ignorado.
Aplicabilidade da lista a seguir
Se uma implementação anterior do interceptor de associação confiável retornar um status de erro diferente, será possível alterar a implementação para corresponder às expectativas ou fazer uma das seguintes alterações:- Inclua a propriedade com.ibm.wsspi.security.trustassociation.initStatus nas propriedades customizadas trust association interceptor. Defina a propriedade para o valor que indica que o interceptor foi inicializado com êxito. Todos os outros valores possíveis implicam em falha. No caso de falha, o inteceptor de associações confiável não é utilizado.
- Inclua a propriedade com.ibm.wsspi.security.trustassociation.ignoreInitStatus nas propriedades customizadas trust association interceptor. Configure o valor dessa propriedade para true, o que diz aoWebSphere Application Server para ignorar o status desse método. Se você incluir essa propriedade nas propriedades customizadas, o WebSphere Application Server não verificará o status de retorno, que é similar às versões prévias do WebSphere Application Server.
- public void cleanup ();
- Esse método é chamado quando o servidor de aplicativos for parado. É utilizado para preparar o interceptor para finalização.
- public void setVersion (String s);
- Esse método é opcional. O método é utilizado para definir a versão e tem uma finalidade somente informativa. O valor padrão é Não Especificado.
Você deve configurar os seguintes métodos implementados pela implementação do interceptor customizado. Essa listagem mostra apenas os métodos e não inclui nenhuma implementação.******************************************************************** import java.util.*; import javax.servlet.http.HttpServletRequest; import com.ibm.websphere.security.*; public class myTAIImpl extends WebSphereBaseTrustAssociationInterceptor implements TrustAssociationInterceptor { public myTAIImpl () { } public boolean isTargetInterceptor(HttpServletRequest req) throws WebTrustAssociationException { //retorna true se for o interceptor de destino, caso contrário retorna false. } public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res) throws WebTrustAssociationFailedException { //validar a solicitação e estabelecer confiança. //criar e retornar o TAIResult public int initialize(Properties props) { //inicializar a implementação. Se bem sucedido, retornar 0, caso contrário, retornar 1. } public String getVersion() { //Return version } public String getType() { //Return type } public void cleanup () { // Código de limpeza. } }
Nota: Se o método init(Properties) for implementado conforme descrito anteriormente em seu interceptor customizado, essa nota não se aplica à sua implementação e você pode prosseguir para a próxima etapa. Versões anteriores de com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor incluem o método public int init (String propsfile). Esse método não é mais requerido, já que as propriedades do interceptor não são lidas de um arquivo. As propriedades agora são inseridas no link Propriedades Customizadas do console administrativo do interceptor, utilizando o console administrativo ou scripts. Essas propriedades são, então, disponibilizadas à sua implementação no método init(Properties). No entanto, para compatibilidade reversa, o método init(String) ainda é suportado. O método init(String) é chamado pela implementação padrão de init(Properties), conforme mostrado no exemplo a seguir.// Implementação do método init(Properties props). Uma implementação Customizada // deve substituir essa. public int init (java.util.Properties props) { String type = props.getProperty("com.ibm.wsspi.security.trustassociation.types"); String classfile= props.getProperty("com.ibm.wsspi.security.trustassociation." +type+".config"); if (classfile != null && classfile.length() > 0 ) { return init(classfile); } else { return -1; } }
Altere sua implementação para implementar o método init(Properties) em vez de depender do método init(String propsfile). Conforme mostrado no exemplo anterior, essa implementação padrão lê as propriedades para carregar o arquivo de propriedade. A propriedade com.ibm.wsspi.security.trustassociation.types obtém o arquivo contendo as propriedades concatenando .config para seu valor.
Nota: O método init(String) ainda funciona se você quiser utilizá-lo em vez de implementar o método init(Properties). O único requisito é que o nome do arquivo que contém as propriedades de associações confiáveis customizadas agora deve ser inserido através do link Propriedades Customizadas do interceptor no console administrativo ou utilizando scripts. É possível inserir a propriedade utilizando qualquer um dos métodos a seguir. O primeiro método é usado para compatibilidade com as versões anteriores do WebSphere Application Server.- Método 1:
- Os mesmos nomes de propriedades utilizados no release anterior são utilizados para obter o nome do arquivo. O nome do arquivo é obtido concatenando
.config para o valor da propriedade com.ibm.wsspi.security.trustassociation.types.
Se o nome do arquivo for denominado myTAI.properties e estiver localizado no diretório app_server_root/properties, configura as seguintes propriedades:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/properties/myTAI.properties
Se o nome do arquivo for myTAI.properties e estiver localizado no diretório /properties, configure as seguintes propriedades:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- Método 2:
- É possível configurar a propriedade com.ibm.wsspi.security.trustassociation.initPropsFile
nas propriedades customizadas de associação de confiança como o local do arquivo. Por exemplo, defina a seguinte propriedade:
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.initPropsFile= app_server_root/myTAI.properties
Digite o código anterior como uma linha contínua.
O local do arquivo de propriedades é completo (por exemplo, app_server_root/properties/myTAI.properties). Como o local pode ser diferente em um ambiente WebSphere Application Server, Network Deployment, use variáveis como ${USER_INSTALL_ROOT} para se referir ao diretório de instalação do WebSphere Application Server. Por exemplo, se o nome do arquivo for myTAI.properties e estiver localizado no diretório app_server_root/properties, configure as seguintes propriedades:
O local do arquivo de propriedades é completo (por exemplo, app_server_root/myTAI.properties). Como o local pode ser diferente em um ambiente WebSphere Application Server, Network Deployment, use variáveis como ${USER_INSTALL_ROOT} para se referir ao diretório de instalação do WebSphere Application Server. Por exemplo, se o nome do arquivo for myTAI.properties e estiver localizado no diretório /properties, configure as seguintes propriedades:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
- Compilar a implementação depois de implementá-la.
Por exemplo: app_server_root/java/bin/javac
-classpath install_root/plugins/com.ibm.ws.runtime.jar;<install_root>/dev/JavaEE/j2ee.jar
myTAIImpl.java
Identifique o arquivo de classe do Trust Association Interceptor para uso quando o servidor for reiniciado. Substitua o arquivo no diretório app_server_root/classes OU use a propriedade de sistema da Java Virtual Machine (JVM) -Dws.ext.dirs para especificar o local em que o arquivo reside.
Copie os arquivos de classe do Trust Association Interceptor em um local no caminho da classe do produto. Copie estes arquivos no diretório profile_root/classes.
Você deve copiar este arquivo de classe no diretório profile_root/classes de cada nó e célula.
- Reinicialize todos os servidores.
- Exclua o interceptor padrão do WebSEAL do console administrativo e clique em Novo para adicionar seu interceptor personalizado. Verifique se o nome da classe é separado por pontos e aparece no caminho da classe.
- Clique no link Propriedades Customizadas para adicionar propriedades adicionais requeridas para inicializar o interceptor customizado. Estas propriedades são passadas para o método init(Properties) de sua implementação quando estende o com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor, conforme descrito na etapa anterior.
- Salve e sincronize (se aplicável) a configuração.
- Inicie os servidores novamente para que o interceptor customizado tenha efeito.
Exemplo
Subtópicos
Trust association interceptor support for Subject creation
The trust association interceptor (TAI) com.ibm.wsspi.security.tai.TrustAssociationInterceptor interface supports several features that are different from the existing com.ibm.websphere.security.TrustAssociationInterceptor interface.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waci
Nome do arquivo: tsec_waci.html