< Anterior | Próximo >

Lição 4.3: Configurar Autorização Baseada em Grupo

Na lição anterior, você designou autorização baseada em usuário individual com os principais do usuário na política de autorização do Java Authentication and Authorization Service. No entanto, quando você tiver centenas ou milhares de usuários, use a autorização baseado em grupo, que autoriza o acesso baseado em grupos em vez de em usuários individuais.

Infelizmente, o objeto Subject que é autenticado no WebSphere Application Server contém apenas um principal de usuário. Este objeto não contém um principal de grupo. É possível incluir um módulo de login customizado para preencher o principal do grupo no objeto Subject.

Para este tutorial, o módulo de login customizado é denominado com.ibm.websphere.samples.objectgrid.security.lm.WASAddGroupLoginModule. O módulo está no arquivo groupLM.jar. Coloque o arquivo JAR no diretório WAS-INSTALL/lib/ext.

O WASAddGroupLoginModule recupera a credencial do grupo público a partir do sujeito WebSphere Application Server e cria um principal de Grupo, com.ibm.websphere.samples.objectgrid.security.WSGroupPrincipal, para representar o grupo. Esse principal de grupo pode então ser usado para autorização do grupo. Os grupos são definidos no arquivo xsAuthGroup2.policy :
grant codebase "http://www.ibm.com/com/ibm/ws/objectgrid/security/PrivilegedAction"
principal com.ibm.websphere.sample.xs.security.WSGroupPrincipal 
		"defaultWIMFileBasedRealm/cn=operatorGroup,o=defaultWIMFileBasedRealm" {
    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.websphere.sample.xs.security.WSGroupPrincipal 
	"defaultWIMFileBasedRealm/cn=adminGroup,o=defaultWIMFileBasedRealm" {
    permission com.ibm.websphere.objectgrid.security.MapPermission "Grid.Map1", "all";
};
O nome do grupo é o WSGroupPrincipal, que representa o grupo.

Incluindo o Módulo de Login Customizado

O módulo de login customizado deve ser incluído em cada uma das seguintes entradas do módulo de login do sistema: Se estiver usando Lightweight Third Party Authentication (LTPA), inclua a entrada nos módulos de login RMI_INBOUND. O LTPA é o mecanismo de autenticação padrão para o WebSphere Application Server Versão 7.0. Para uma configuração do WebSphere Application Server Network Deployment, é necessário definir apenas as entradas de configuração do mecanismo de autenticação de LTPA.

Use as seguintes etapas para configurar o módulo de login com.ibm.websphere.samples.objectgrid.security.lm.WASAddGroupLoginModule fornecido:

  1. No console administrativo, clique em Segurança > Segurança Global > Java Authentication and Authorization Service > Logins do Sistema > login_module_name > Módulos de Login do JAAS > Novo.
  2. Insira o nome da classe como com.ibm.websphere.sample.xs.security.lm.WASAddGroupLoginModule.
  3. Opcional: Inclua uma propriedade debug e configure o valor como true.
  4. Clique em Aplicar para incluir o novo módulo na lista de módulos de login.

Configurando o Arquivo de Propriedades JAAS Authorization Usando as Propriedades da JVM

No console administrativo, execute as seguintes etapas para os servidores xs1 e xs2 no xsCluster. Se uma topologia de implementação diferente for usada, execute as etapas a seguir para os servidores de aplicativos que hospedam 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. Insira os seguintes argumentos Genéricos de JVM ou substitua a entrada-Djava.security.auth.policy com o seguinte texto:
    -Djava.security.auth.policy=samples_home/security/xsAuthGroup2.policy
  3. Clique em OK e salve as mudanças.

Testando a Autorização do Grupo com o Aplicativo de Amsotra

É possível testar se e autorização de grupo foi configurada pelo módulo de login com o aplicativo de amostra.

  1. Reinicie os servidores de contêiner. Para este tutorial, os servidores de contêiner são os servidores de xs1 e xs2.
  2. Efetue login no aplicativo de amostra. Em um navegador da web, abra http://<host>:<port>/EmployeeManagementWeb/management.jsp e efetue login com o nome de usuário admin1 e senha admin1.
  3. Exibir um funcionário. Clique em Exibir um Funcionário e procure pelo endereço de email authemp2@acme.com. Uma mensagem exibe que o usuário não pode ser localizado.
  4. 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. Uma mensagem exibe que o funcionário foi incluído.
  5. Efetue login como o usuário operador. Abra uma segunda janela do navegador da web e depois a seguinte URL: http://<host>:<port>/EmployeeManagermentWeb/management.jsp. Use o nome de usuário operator1 e a senha operator1.
  6. Tente exibir um funcionário. Clique em Exibir um Funcionário e procure pelo endereço de email authemp2@acme.com. O funcionário é exibido.
  7. Incluir um funcionário. Clique em Incluir um Funcionário. Inclua o email authemp3@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 operator não tem permissão para inserir dados no mapa Map1.

Ponto de verificação de lições

Você configurou grupos para simplificar a designação de permissão para os usuários de seu aplicativo.

< Anterior | Próximo >