Personalización del inicio de sesión de aplicaciones para realizar la confirmación de identidad utilizando JAAS

Puede utilizar la infraestructura de inicio de sesión JAAS (Java™ Authentication and Authorization Service) para crear una configuración de inicio de sesión JAAS que se puede utilizar para realizar el inicio de sesión en una confirmación de identidad en Liberty.

Acerca de esta tarea

Configurando la confirmación de identidad con la validación de confianza, una aplicación puede utilizar la configuración de inicio de sesión JAAS para realizar una confirmación de identidad mediante programa. Consulte IdentityAssertionLoginModule para obtener información más detallada.

Procedimiento

  1. Delegue la validación de confianza a un punto de plug-in implementado por el usuario.
    La validación de confianza se realiza gracias a un módulo de inicio de sesión personalizado. Este módulo de inicio de sesión personalizado realiza la validación de confianza necesaria y, a continuación, establece la información de confianza e identidad en el estado compartido que se va a pasar al módulo de inicio de sesión de confirmación de identidad. Se necesita una correlación en la siguiente clave de estado compartido:
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
    Si falta el estado, se notifica el problema WSLoginFailedException mediante la clase IdentityAssertionLoginModule.
    La correlación en la clave de estado compartido debe incluir una clave de confianza con el siguiente nombre de clave:
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
    Si la clave se establece en true, se establece la confianza. Si la clave se establece en false, no se establece la confianza y la clase IdentityAssertionLoginModule crea un problema WSLoginFailedException.

    La correlación en la clave de estado compartido también establece uno de los siguientes recursos:

    • Una clave de identidad. java.security.Principal puede establecerse en la siguiente clave:
      com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.principal
    • Un certificado java.security.cert.X509Certificate[]. Este certificado puede establecerse en la siguiente clave:
       com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certficates
    Si se proporcionan tanto un principal como un certificado, se utiliza el principal y se notifica un aviso.
  2. Cree una configuración JAAS para los inicios de sesión de la aplicación. La configuración JAAS contendrá el módulo de inicio de sesión personalizado de validación de confianza implementado por el usuario y la clase IdentityAssertionLoginModule. A continuación, para configurar un inicio de sesión de la aplicación, añada al siguiente código en el archivo server.xml:
    <jaasLoginContextEntry id="CustomIdentityAssertion" name="CustomIdentityAssertion" 
                           loginModuleRef="customIdentityAssertion,identityAssertion" />
    <jaasLoginModule id="customIdentityAssertion" 
                     className="com.ibm.ws.security.authentication.IdentityAssertionLoginModule" 
                     controlFlag="REQUIRED" libraryRef="customLoginLib"/>
    	<library id="customLoginLib">
        <fileset dir="${server.config.dir}" includes="IdentityAssertionLoginModule.jar"/>      
    	</library>
    La aplicación utiliza la configuración JAAS para realizar una confirmación de identidad.
  3. Realice la aserción de identidad programable. Ahora un programa puede utilizar la configuración de inicio de sesión JAAS para realizar una aserción de identidad mediante programa. El programa de aplicación puede crear un contexto de inicio de sesión para la configuración JAAS creada en el paso 2, después puede iniciar la sesión del contexto con la identidad con la que se confirma. Si el inicio de sesión se realiza correctamente, dicha identidad se puede establecer en el proceso de ejecución actual. En el ejemplo siguiente se ilustra este proceso:
    NameCallback handler = new NameCallback(new MyPrincipal("Joe"));
    LoginContext lc = new LoginContext("customIdentityAssertion", handler);
    lc.login();  //assume successful
    Subject s = lc.getSubject();
    WSSubject.setRunAsSubject(s);
    // From here on , the runas identity is "Joe"
    Nota: La clase MyPrincipal es la implementación de la interfaz java.security.Principal en el ejemplo.

Resultados

A través del uso de la infraestructura de inicio de sesión JAAS y dos módulos de inicio de sesión implementados por el usuario, puede crear una configuración de inicio de sesión JAAS que se puede utilizar para iniciar sesión en una confirmación de identidad.

Icono que indica el tipo de tema Tema de tarea

Nombre de archivo: twlp_dev_custom_idassertion.html