Usando o Modelo de Programação Java Authentication and Authorization Service para Autenticação de Web

O WebSphere Application Server suporta o modelo de segurança declarativa do Java™ EE (Java Platform, Enterprise Edition). É possível definir a política de autenticação e controle de acesso utilizando o descritor de implementação Java EE. É possível empilhar ainda mais os módulos de login customizado para customizar o mecanismo de autenticação do WebSphere Application Server.

Antes de Iniciar

O módulo de login customizado pode desempenhar o mapeamento de proprietários e credenciais, o token de segurança customizado, o processamento customizado de credenciais e manipulação de erros, entre outras possibilidades. Geralmente, não você deve usar o código do aplicativo para executar a função de autenticação. Utilize as técnicas de programação descritas nesta seção, se for necessário desempenhar a função de autenticação no código do aplicativo. Utilize a segurança declarativa como uma regra; utilize as técnicas descritas nesta seção como um último recurso.

Sobre Esta Tarefa

Quando a opção SSO (Conexão Única) do mecanismo LTPA (Lightweight Third-Party Authentication) está ativada, a sessão de login do cliente Web é rastreada por um cookie de token SSO de LTPA após o login bem-sucedido. No logout, este token é excluído para terminar a sessão de login, mas o assunto do lado do servidor não é excluído. Quando você usa o modelo de segurança declarativa, o contêiner de Web do WebSphere Application Server executa o gerenciamento de autenticação de cliente e de sessão de login automaticamente. É possível desempenhar a autenticação no código do aplicativo configurando uma página de login sem uma restrição de segurança do Java EE e direcionando pedidos do cliente primeiramente para sua página de login. Sua página de login pode usar o modelo de programação JAAS (Java Authentication and Authorization Service) para desempenhar a autenticação. Para possibilitar que módulos de login da Web do WebSphere Application Server gerem cookies SSO, use as etapas a seguir.

Procedimento

  1. Crie uma nova configuração JAAS de login do sistema. Para acessar o painel, clique em Segurança > Segurança Global. Em Java Authentication and Authorization Service, clique em Logins do sistema.
  2. Faça manualmente o clone da configuração de login WEB_INBOUND e forneça a ele um novo alias. Para fazer o clone da configuração de login, clique em Novo, digite um nome para a configuração, clique em Aplicar e, em seguida, clique em Módulos de login do JAAS em Propriedades adicionais. Clique em Novo e configure o módulo de login do JAAS. Para obter informações adicionais, consulte Configurações do Módulo de Login para o Java Authentication and Authorization Service. O contêiner da Web do WebSphere Application Server usa a configuração de login WEB_INBOUND para autenticar os Web clients. Alterar a configuração de login WEB_INBOUND afeta todos os aplicativos da Web na célula. Você deve criar sua própria configuração de login clonando o conteúdo da configuração de login do WEB_INBOUND.
  3. Selecione o módulo de login wsMapDefaultInboundLoginModule e clique em Propriedades Customizadas. Há dois módulos de login definidos em sua configuração de login: ltpaLoginModule e wsMapDefaultInboundLoginModule.
  4. Inclua um cookie de nome da propriedade de login com o valor true. Os dois módulos de login estão ativados para gerar os cookies SSO do LTPA. Não inclua a opção de login do cookie para a configuração de login WEB_INBOUND original.
  5. Empilhe o LoginModule(s) customizado na nova configuração de login (opcional).
  6. Utilize sua página para login programático, executando um JAAS LoginContext.login utilizando a configuração de login definida recentemente. Após efetuar login com êxito, ltpaLoginModule ou wsMapDefaultInboundLoginModule gera um cookie de SSO do LTPA em uma autenticação bem sucedida. Exatamente qual LoginModule gera o cookie de SSO depende de vários fatores, incluindo a configuração de autenticação do sistema e a condição de tempo de execução (que está além do escopo desta seção).
  7. Chame o método modificado WSSubject.setRunAsSubject para incluir o assunto no cache de autenticação. O assunto deve ser um assunto JAAS do WebSphere Application Server criado por LoginModule. A inclusão do assunto no cache de autenticação recria um assunto do token de SSO.
  8. Utilize a página de logout programática para revogar os cookies SSO, chamando o método revokeSSOCookies a partir da classe WSSecurityHelper.

    O termo "cookies" é usado porque o WebSphere Application Server Versão 5.1.1 e mais recentes suporta(m) um novo token LTPA SSO com um algoritmo de criptografia diferente, mas pode ser configurado para gerar o token LTPA SSO original para compatibilidade com versões anteriores. Observe que o assunto ainda está no cache de autenticação e apenas os cookies SSO são revogados.

    Recurso Reprovado Recurso Reprovado: O método revokeSSOCookies(HttpServletRequest, HttpServletResponse) da classe WSSecurityHelper foi descontinuado. Use a funcionalidade fornecida pelo método Java Servlet-3.0 logout(). Leia Métodos de Segurança do Servlet.depfeat

Exemplo

Use a seguinte amostra de código para executar a autenticação.

Evitar Problemas Evitar Problemas: Se você configurar a senha para a classe de factory WSCallbackHandlerFactoryset para obter manipuladores como null, como foi feito no exemplo a seguir, permitirá a asserção de identidade sem uma senha. gotcha
Suppose you wrote a LoginServlet.java:

	Import com.ibm.wsspi.security.auth.callback.WSCallbackHandlerFactory;
	Import com.ibm.websphere.security.auth.WSSubject;

	public Object login(HttpServletRequest req, HttpServletResponse res) 
	throws ServletException {

	PrintWriter out = null;
	try {
		out =  res.getWriter();
      res.setContentType("text/html");
	} catch (java.io.IOException e) {
		// Error handling
	}

	Subject subject = null;
	try {
	LoginContext lc = new LoginContext("system.Your_login_configuration",
WSCallbackHandlerFactory.getInstance().getCallbackHandler(
userid, null, password, req, res, null));
		lc.login();
		subject = lc.getSubject();
      WSSubject.setRunAsSubject(subject);
	} catch(Exception e) {
		// capture todas as exceções possíveis se desejar ou manipule-as separadamente
		out.println("Exception in LoginContext login + Exception = " +
 e.getMessage());
		throw new ServletException(e.getMessage());
	}

O seguinte é o código de amostra para revogar os cookies SSO em um logout de programação:


O LogoutServlet.java:

	public void logout(HttpServletRequest req, HttpServletResponse res,
 Object retCreds)  throws ServletException {
		 PrintWriter out =null;
		 try {
		 	out =  res.getWriter();
        res.setContentType("text/html");
		 } catch (java.io.IOException e) {
			// Manipulação de Erros
		 }
		 try {
		  	WSSecurityHelper.revokeSSOCookies(req, res);
		 } catch(Exception e) {
		 	// capture todas as exceções possíveis se desejar ou manipule-as separadamente
		 	out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
		 	throw new ServletException(e);
		 }
	 }

O que Fazer Depois

Para obter mais informações sobre autenticação JAAS, consulte Desenvolvendo Logins Programáticos com o Java Authentication and Authorization Service. Para obter mais informações sobre o módulo de login AuthenLoginModule, consulte o Exemplo: Customizando uma Configuração de Autenticação e de Login do Java Authentication and Authorization Service do Lado do Servidor.

Í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_jaasauthentprog
Nome do arquivo: tsec_jaasauthentprog.html