Uso del modelo de programación Java Authentication and Authorization Service para la autenticación web

WebSphere Application Server da soporte al modelo de seguridad declarativa Java™ EE (Java Platform, Enterprise Edition). Puede definir la política de autenticación y control de acceso utilizando el descriptor de despliegue Java EE. Asimismo, puede apilar módulos de inicio de sesión personalizados para personalizar el mecanismo de autenticación de WebSphere Application Server.

Antes de empezar

Un módulo de inicio de sesión personalizado puede realizar la correlación de principales y credenciales, el proceso de señales de seguridad personalizadas y de credenciales personalizadas, y el manejo de errores, entre otras posibilidades. Normalmente, no es necesario utilizar el código de aplicación para ejecutar la función de autenticación. Si tiene que ejecutar la función de autenticación en el código de aplicación, utilice las técnicas de programación que se describen en este apartado. Utilice la seguridad declarativa como regla; utilice las técnicas que se describen en este apartado como último recurso.

Acerca de esta tarea

Si la opción de inicio de sesión único (SSO) del mecanismo LTPA (Lightweight Third-Party Authentication) está habilitado, una vez conectado, la sesión de inicio de sesión del cliente web es rastreada por una cookie de símbolo SSO LTPA. Cuando termina la sesión, este símbolo se suprime para terminar la sesión de inicio de sesión, pero no se suprime el sujeto del servidor. Cuando se utiliza el modelo de seguridad declarativa, el contenedor Web de WebSphere Application Server realiza automáticamente la autenticación de cliente y la gestión de la sesión de inicio de sesión. Para realizar la autenticación en el código de la aplicación, establezca una página de inicio de sesión sin una restricción de seguridad Java EE y dirija primero las solicitudes de cliente a su página de inicio de sesión. La página de inicio de sesión puede utilizar el modelo de programación JAAS (Java Authentication and Authorization Service) para realizar la autenticación. Para habilitar los módulos de inicio de sesión Web de WebSphere Application Server para generar cookies SSO, utilice los pasos siguientes.

Procedimiento

  1. Cree una nueva configuración JAAS de inicio de sesión del sistema. Para acceder al panel, pulse Seguridad > Seguridad global. En Java Authentication and Authorization Service, pulse Inicios de sesión del sistema.
  2. Clone manualmente la configuración de inicio de sesión WEB_INBOUND y asígnele un alias nuevo. Para clonar la configuración de inicio de sesión, pulse Nuevo, escriba un nombre para la configuración, pulse Aplicar y pulse Módulos de inicio de sesión JAAS en Propiedades adicionales. Pulse Nuevo y configure el módulo de inicio de sesión JAAS. Para obtener más información, consulte Valores de módulo de inicio de sesión para Java Authentication and Authorization Service. El contenedor Web de WebSphere Application Server utiliza la configuración de inicio de sesión WEB_INBOUND para autenticar clientes web. Si cambia la configuración de inicio de sesión WEB_INBOUND, afectará a todas las aplicaciones web de la célula. Debe crear su propia configuración de inicio de sesión clonando el contenido de la configuración de inicio de sesión WEB_INBOUND.
  3. Seleccione el módulo de inicio de sesión wsMapDefaultInboundLoginModule y pulse Propiedades personalizadas. Hay dos módulos de inicio de sesión definidos en la configuración de inicio de sesión: ltpaLoginModule y wsMapDefaultInboundLoginModule.
  4. Añada un nombre de propiedad de inicio de sesión cookie con un valor true. Los dos módulos de inicio de sesión están habilitados para generar cookies SSO LTPA. No añada la opción de inicio de sesión de cookie a la configuración de inicio de sesión WEB_INBOUND original.
  5. Apile los LoginModules personalizados en la nueva configuración de inicio de sesión (opcional).
  6. Utilice la página de inicio de sesión para el inicio de sesión mediante JAAS LoginContext.login utilizando la configuración de inicio de sesión que acaba de definir. Una vez conectado, el ltpaLoginModule o el wsMapDefaultInboundLoginModule generará una cookie SSO LTPA cuando una autenticación sea satisfactoria. Qué LoginModule exacto genera la cookie SSO depende de varios factores, incluida la configuración de autenticación del sistema y la condición de tiempo de ejecución (que se sale fuera del ámbito de este apartado).
  7. Llame al método WSSubject.setRunAsSubject modificado para añadir el sujeto a la memoria caché de autenticación. Debe tratarse de un sujeto JAAS de WebSphere Application Server creado por LoginModule. Si añade el sujeto a la antememoria de autenticación, se vuelve a crear un sujeto a partir del símbolo SSO.
  8. Utilice la página de cierre de sesión programático para revocar las cookies SSO invocando el método revokeSSOCookies de la clase WSSecurityHelper.

    El término "cookies" se utiliza porque WebSphere Application Server Versión 5.1.1 y superiores dan soporte a una señal SSO LTPA nueva con un algoritmo de cifrado diferente, pero se puede configurar para generar la señal SSO LTPA original para la compatibilidad con versiones anteriores. Tenga en cuenta que el sujeto continúa en la memoria caché de autenticación y sólo se revocan las cookies SSO.

    Deprecated feature Deprecated feature: El método revokeSSOCookies(HttpServletRequest, HttpServletResponse) de la clase WSSecurityHelper está en desuso. Utilice la funcionalidad proporcionada por el método logout() de Java Servlet-3.0. Consulte Métodos de seguridad de servlet.depfeat

Ejemplo

Utilice el siguiente ejemplo de código para realizar la autenticación.

Avoid trouble Avoid trouble: Si establece la contraseña para la clase de fábrica WSCallbackHandlerFactoryset para obtener manejadores en null, como se realiza en el siguiente ejemplo, permite una aserción de identidad sin una contraseña. gotcha
Supongamos que ha escrito un LoginServlet.java:

	Importe com.ibm.wsspi.security.auth.callback.WSCallbackHandlerFactory;
	Importe 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){
				// Manejo de errores	}

		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 las excepciones posibles si lo desea o manéjelas por
separado
		out.println("Exception in LoginContext login + Exception = " +
 e.getMessage());
		throw new ServletException(e.getMessage());
	}

A continuación se proporciona un código de ejemplo para revocar las cookies SSO
al finalizar la sesión de programación:


The 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){
			// Manejo de errores
		 }
		          try {
		  	WSSecurityHelper.revokeSSOCookies(req, res);
		 } catch(Exception e) {
		 	// capture todas las excepciones posibles si lo desea o manéjelas por
separado
		 	out.println("JAASLogoutServlet: logout Exception = " + e.getMessage());
		 	throw new ServletException(e);
		 }
	 }

Qué hacer a continuación

Para obtener más información sobre la autenticación JAAS, consulte Desarrollo de inicios de sesión programáticos con JAAS (Java Authentication and Authorization Service). Para obtener más información sobre el módulo de inicio de sesión AuthenLoginModule, consulte Ejemplo: Personalización de una configuración de inicio de sesión y autenticación JAAS (Java Authentication and Authorization Service) del servidor. .

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_jaasauthentprog
File name: tsec_jaasauthentprog.html