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

Se você estiver utilizando um servidor proxy reverso de terceiros diferente do Tivoli WebSEAL, deverá fornecer uma classe de implementação para a interface do interceptor do produto para o seu servidor proxy. A interface com.ibm.wsspi.security.TrustAssociationInterceptor.java que você deve implementar é descrita.
Nota: A interface Trust Association Interceptor (TAI) (com.ibm.wsspi.security.tai.TrustAssociationInterceptor) suporta diversos novos recursos e é diferente da interface com.ibm.wsspi.security.TrustAssociationInterceptor existente.

Procedimento

  1. 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.

  2. 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.
    [IBM i][AIX Solaris HP-UX Linux Windows]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
    [z/OS]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:
    [IBM i][AIX Solaris HP-UX Linux Windows]
    com.ibm.wsspi.security.trustassociation.initPropsFile=
    app_server_root/properties/myTAI.properties
    [z/OS]
    com.ibm.wsspi.security.trustassociation.initPropsFile=
    app_server_root/myTAI.properties

    Digite o código anterior como uma linha contínua.

    [AIX Solaris HP-UX Linux Windows][IBM i]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:

    [z/OS]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
    • [IBM i][AIX Solaris HP-UX Linux Windows]com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
    • [z/OS]com.ibm.wsspi.security.trustassociation.myTAItype.config = app_server_root/myTAI.properties
  3. 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
    1. [AIX Solaris HP-UX Linux Windows][z/OS]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.
    2. [IBM i]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.

    3. Reinicialize todos os servidores.
  4. 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.
  5. 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.
  6. Salve e sincronize (se aplicável) a configuração.
  7. Inicie os servidores novamente para que o interceptor customizado tenha efeito.

Exemplo

Consulte o artigo Segurança: Recursos para Aprendizado para obter uma referência a um exemplo de um interceptor customizado.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waci
Nome do arquivo: tsec_waci.html