< Anterior | Próximo >

Lição 4.2: Ativar Autorização Baseada no Usuário

No módulo de autenticação deste tutorial, dois usuários foram criados: operator1 e admin1. É possível designar permissões diferentes para esses usuários com a autorização Java Authentication and Authorization Service (JAAS).

Definindo a Política de Autorização do Java Authentication and Authorization Service (JAAS) Usando os Principals do Usuário

É possível designar permissões para os usuários criados anteriormente. Designe permissões somente leitura ao usuário operator1 para todos os mapas. Designe ao usuário admin1 todas as permissões. Use o arquivo de política de autorização JAAS para conceder permissões para os principals.
Edite o arquivo de autorização do JAAS. O arquivo xsAuth2.policy está no diretório samples_home/security:
grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/operator1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "read";
};

grant codebase http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction
Principal com.ibm.ws.security.common.auth.WSPrincipalImpl "defaultWIMFileBasedRealm/admin1" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "all";
};
Neste arquivo, o código base http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction é uma URL reservada especialmente para o ObjectGrid. Todas as permissões do ObjectGrid concedidas aos principals devem usar esse código base especial. As seguintes permissões são designadas nesse arquivo:
  • A primeira instrução de concessão concede permissão read para o principal operator1. O usuário operador1 possui permissão somente leitura para o mapa Map1 da instância Grid do ObjectGrid.
  • A segunda instrução de concessão concede a permissão de mapa 'all' para o principal do admin1. O usuário admin1 possui permissão all para o mapa Map1 na instância Grid do ObjectGrid.
  • O nome do principal é defaultWIMFileBasedRealm/operator1, mas não Operator1. O WebSphere Application Server inclui automaticamente o nome da região no nome do principal quando repositórios federados são usados como o registro de conta do usuário. Ajuste esse valor, se necessário.

Configurando o Arquivo de Política de Autorização JAAS Usando as Propriedades da JVM

Use as seguintes etapas para configurar as propriedades JVM para os servidores xs1 e xs2, que estão no cluster xsCluster. Se estiver usando uma topologia diferente da topologia de amostra usada neste tutorial, configure o arquivo em todos os servidores de contêiner.
  1. No console administrativo, clique em Servidores > Servidores de Aplicativos > server_name > Gerenciamento Java e Processos > Definição de Processo > Java virtual machine
  2. Inclua os seguintes argumentos JVM genéricos:
    -Djava.security.auth.policy=samples_home/security/xsAuth2.policy
  3. Clique em OK e salve as mudanças.

Executando os Aplicativos de Amostra para Testar a Autorização

É possível usar o mesmo aplicativo de amostra para testar as configurações de autorização. O usuário administrador possui todas as permissões no mapa Map1, inclusive permissões para exibir e incluir funcionários. O usuário operador pode apenas visualizar os funcionários porque esse usuário receber permissão somente leitura.
  1. Reinicie todos os servidores de aplicativos que estão executando servidores de contêiner.
  2. Abra o aplicativo EmployeeManagementWeb. Em um navegador da web, abra http://<host>:<port>/EmployeeManagermentWeb/management.jsp.
  3. Efetue login no aplicativo como administrador. Use o nome de usuário admin1 e a senha admin1.
  4. Tente exibir um funcionário. Clique em Exibir um Funcionário e procure pelo endereço de e-mail authemp1@acme.com. Uma mensagem exibe que o usuário não pode ser localizado.
  5. Incluir um funcionário. Clique em Incluir um Funcionário. Inclua o email authemp1@acme.com, o nome Joe e o sobrenome Doe e, em seguida, clique em Enviar. Uma mensagem exibe que o funcionário foi incluído.
  6. Efetue login como o usuário operador. Abra uma segunda janela do navegador da web e depois abra a seguinte URL: http://<host>:<port>/EmployeeManagermentWeb/management.jsp. Use o nome de usuário operator1 e a senha operator1.
  7. Tente exibir um funcionário. Clique em Exibir um Funcionário e procure pelo endereço de e-mail authemp1@acme.com. O funcionário é exibido.
  8. Incluir um funcionário. Clique em Incluir um Funcionário. Inclua o email authemp2@acme.com, o nome Joe e o sobrenome Doe e, em seguida, clique em Enviar. A mensagem a seguir é exibida:
    Ocorre uma exceção ao Incluir o funcionário. Consulte abaixo para 

    obter mensagens de exceção detalhadas.
    A seguinte exceção está na cadeia de exceções:
    java.security.AccessControlException: Acesso negado 
    (com.ibm.websphere.objectgrid.security.MapPermission Grid.Map1 insert)
    Esta mensagem é exibida porque o usuário operator1 não tem permissão para inserir dados no mapa Map1.
Se você estiver executando com uma versão do WebSphere Application Server anterior à Versão 7.0.0.11, um erro java.lang.StackOverflowError será exibido no servidor de contêiner. Este erro é causado por um problema com o IBM Developer Kit. O problema é corrigido no IBM Developer Kit fornecido com o WebSphere Application Server Versão 7.0.0.11 e posterior.

Ponto de verificação de lições

Nesta lição, você configurou a autorização ao designar permissões para usuários específicos.

< Anterior | Próximo >