< 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: operator e manager. É 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 operator para todos os mapas. Designe ao usuário manager 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 xAuth3.policy está no diretório samples_home/security_extauth.
grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
    principal javax.security.auth.x500.X500Principal
    "CN=operator,O=acme,OU=OGSample" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "read";
};

grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
    principal javax.security.auth.x500.X500Principal
    "CN=manager,O=acme,OU=OGSample" {
    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 "CN=operator,O=acme,OU=OGSample". O usuário "CN=operator,O=acme,OU=OGSample" 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 "CN=manager,O=acme,OU=OGSample". O usuário "CN=manager,O=acme,OU=OGSample" possui permissão all para o mapa Map1 na instância Grid do ObjectGrid.

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_extauth/xsAuth3.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 gerenciador 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. Para este tutorial, reinicie os servidores xs1 e xs2.
  2. Abra o aplicativo EmployeeManagementWeb. Em um navegador da web, abra http://<host>:<port>/EmployeeManagermentWeb/management.jsp.
  3. Efetue login no aplicativo usando qualquer nome de usuário e senha válidos.
  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 fornecido Joe e o sobrenome Doe. Clique em Enviar. Uma mensagem exibe que o funcionário foi incluído.
  6. Edite o arquivo samples_home/security_extauth/client3.props. Altere o valor de propriedade credentialGeneratorProps a partir do gerenciador manager1 para operador operator1. Depois de editar o arquivo, o servlet usará o nome do usuário "operador" e a senha "operator1" para se autenticar nos servidoresWebSphere eXtreme Scale.
  7. Reinicie o cluster appCluster para selecionar as mudanças no arquivo samples_home/security_extauth/client3.props.
  8. 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.
  9. Incluir um funcionário. Clique em Incluir um Funcionário. Inclua o email authemp2@acme.com, o nome fornecido Joe e o sobrenome Doe. 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.
    O texto da exceção detalhado é o seguinte:
    java.security.AccessControlException: Acesso negado 
    (com.ibm.websphere.objectgrid.security.MapPermission Grid.Map1 insert)
    Esta mensagem é exibida porque o usuário operator 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 >