Migración del inicio de sesión programático CORBA (Object Request Broker Architecture) a JAAS (Java Authentication and Authorization Service) (CORBA y JAAS)

Utilice este tema como ejemplo de cómo realizar el inicio de sesión mediante programa utilizando las API de inicio de sesión programático basado en CORBA.

Antes de empezar

[AIX Solaris HP-UX Linux Windows][IBM i]En este documento se describen las API de inicio de sesión programático CORBA (Common Object Request Broker Architecture) en desuso y las alternativas que proporciona JAAS. WebSphere Application Server da soporte totalmente a JAAS (Java™ Authentication and Authorization Service) como API (interfaces de programación de aplicaciones) de inicio de sesión programático. Consulte Configuración de inicios de sesión mediante programa para JAAS (Java Authentication and Authorization Service) y Desarrollo de inicios de sesión programáticos con JAAS (Java Authentication and Authorization Service) para obtener más información sobre el soporte de JAAS.

[z/OS]Las API (interfaces de programación de aplicaciones) de CORBA (Common Object Request Broker Architecture) no reciben soporte en el entorno de WebSphere Application Server para z/OS. Si migra una aplicación de otro producto WebSphere Application Server a WebSphere Application Server para z/OS, debe tener en cuenta que las API de seguridad están en desuso en la Versión 6.0.x. Si desea utilizar estas aplicaciones en WebSphere Application Server para z/OS Versión 8.0, debe realizar la migración a JAAS (Java Authentication and Authorization Service).

La lista siguiente incluye las API de inicio de sesión programático CORBA en desuso.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/LoginHelper.java.
  • [AIX Solaris HP-UX Linux Windows][z/OS]${user.install.root}/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [IBM i]raíz_perfil/installedApps/sampleApp.ear/default_app.war/WEB-INF/classes/ServerSideAuthenticator.java.
  • [AIX Solaris HP-UX Linux Windows][IBM i]eorg.omg.SecurityLevel2.Credentials. Esta API se incluye con el producto, pero se recomienda que utilice la API.

Las API que se proporcionan en WebSphere Application Server son una combinación de las API de JAAS estándar y de una implementación de producto de las interfaces de JAAS estándar.

[z/OS]Las API soportadas que se proporcionan en WebSphere Application Server para z/OS son una combinación de API de JAAS estándar y una implementación de producto de interfaces JAAS estándar con algunas extensiones menores.

La información siguiente sólo es un resumen; consulte la documentación de JAAS específica de la plataforma que se encuentra en: http://www.ibm.com/developerworks/java/jdk/security/.

  • API de inicio de sesión mediante programa:
    • javax.security.auth.login.LoginContext
    • Interfaz javax.security.auth.callback.CallbackHandler: el producto WebSphere Application Server proporciona la siguiente implementación de la interfaz javax.security.auth.callback.CallbackHandler:
      com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl
      Facilita un manejador CallbackHandler sin solicitud cuando la aplicación proporciona datos de autenticación básicos (ID de usuario, contraseña y reino de seguridad) o datos de señales a los módulos de inicio de sesión del producto. Esta API se recomienda para el inicio de sesión en el extremo del servidor.
      [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl
      [AIX Solaris HP-UX Linux Windows][IBM i]Proporciona un manejador CallbackHandler de solicitud de inicio de sesión para reunir datos de autenticación básicos (ID de usuario, contraseña y reino de seguridad). Esta API se recomienda para el inicio de sesión en el extremo del cliente.

      Si se utiliza esta API en el servidor, éste quedará bloqueado para la entrada de datos.

      com.ibm.websphere.security.auth.callback.WSStdinCallbackHandlerImpl
      Proporciona un manejador CallbackHandler de solicitud de inicio de sesión stdin para reunir datos de autenticación básicos (ID de usuario, contraseña y reino de seguridad). Esta API se recomienda para el inicio de sesión en el extremo del cliente.
      Nota: Si se utiliza esta API en el servidor, éste quedará bloqueado para la entrada de datos.
    • Interfaz javax.security.auth.callback.Callback:
      javax.security.auth.callback.NameCallback
      La proporciona JAAS para pasar el nombre de usuario a la interfaz LoginModules.
      javax.security.auth.callback.PasswordCallback
      La proporciona JAAS para pasar la contraseña a la interfaz LoginModules.
      com.ibm.websphere.security.auth.callback.WSCredTokenCallbackImpl
      La proporciona el producto para realizar un inicio de sesión basado en señales. Con esta API, una aplicación puede pasar una matriz de bytes de señales a la interfaz LoginModules.
    • Interfaz javax.security.auth.spi.LoginModule

      WebSphere Application Server proporciona una implementación de LoginModules para el inicio de sesión de cliente y servidor. Consulte Configuración de inicios de sesión mediante programa para JAAS (Java Authentication and Authorization Service) para obtener más información.

  • javax.security.Subject:
    [AIX Solaris HP-UX Linux Windows][IBM i]com.ibm.websphere.security.auth.WSSubject
    [AIX Solaris HP-UX Linux Windows][IBM i]Extensión que proporciona el producto para invocar los recursos J2EE remotos utilizando las credenciales de javax.security.Subject.
    [z/OS]com.ibm.websphere.security.auth.WSSubject
    [z/OS]Extensión que proporciona el producto para invocar los recursos J2EE remotos utilizando las credenciales de javax.security.Subject.

    Una aplicación debe invocar el método WSSubject.doAs para poder acceder a los recursos J2EE utilizando el sujeto generado mediante una invocación explícita de un módulo de inicio de sesión de WebSphere Application Server.

    com.ibm.websphere.security.cred.WSCredential
    Después de un inicio de sesión JAAS correcto con las interfaces LoginModules de WebSphere Application Server, se crea una credencial com.ibm.websphere.security.cred.WSCredential y se almacena en el sujeto.
    com.ibm.websphere.security.auth.WSPrincipal
    Un principal autenticado que se crea y almacena en un sujeto autenticado mediante la interfaz LoginModules de WebSphere Application Server.

Procedimiento

  1. [AIX Solaris HP-UX Linux Windows][IBM i]Utilice lo siguiente como ejemplo para llevar a cabo el inicio de sesión mediante programa utilizando las API de inicio de sesión mediante programa basadas en CORBA: Las API de inicio de sesión mediante programa basadas en CORBA se han sustituido por el inicio de sesión JAAS.
    Nota: La API (interfaz de programación de aplicaciones) LoginHelper que se utiliza en el siguiente ejemplo está en desuso en WebSphere Application Server Versión 9.0 y se eliminará en futuros releases. Se recomienda que utilice las API de inicio de sesión programático JAAS que se muestran en el paso siguiente.
    public class TestClient {
    ...
    private void performLogin() {
    // Obtener el ID de usuario y la contraseña del usuario.
    String userid = customGetUserid();
    String password = customGetPassword();
    
    // Crear un nuevo contexto de seguridad para mantener datos de autenticación
    LoginHelper loginHelper = new LoginHelper();
             try {
    // Proporcionar el ID de usuario y la contraseña del usuario para la autenticación.
    org.omg.SecurityLevel2.Credentials credentials = 
    loginHelper.login(userid, password);
    
    // Utilizar las nuevas credenciales para todas las invocaciones futuras.
    loginHelper.setInvocationCredentials(credentials);
    // Recuperar el nombre de usuario de las credenciales
    // para poder indicar al usuario que el inicio de sesión ha sido satisfactorio.
    
    String username = loginHelper.getUserName(credentials);
    System.out.println("Security context set for user: "+username);
    } catch (org.omg.SecurityLevel2.LoginFailed e) {
    // Manejar la excepción LoginFailed.
    }
    }
    ...
    }
  2. Utilice el siguiente ejemplo para migrar las API de inicio de sesión mediante programa basadas en CORBA a las API de inicio de sesión mediante programa JAAS.

    En el siguiente ejemplo se da por supuesto que el código de la aplicación tiene los permisos de seguridad de Java 2 necesarios. Para obtener más información, consulte Configuración de inicios de sesión mediante programa para JAAS (Java Authentication and Authorization Service), Protección de los recursos y las API del sistema (seguridad de Java 2) para el desarrollo de aplicaciones y la documentación sobre JAAS que se encuentra en http://www.ibm.com/developerworks/java/jdk/security/.

    public class TestClient {
    ...
    private void performLogin() {
    // Crear un nuevo contexto de inicio de sesión de JAAS.
    javax.security.auth.login.LoginContext lc = null;
    
             try {
    // Utilizar el mensaje de solicitud de la GUI para recopilar los datos de autorización básica.
    lc = new javax.security.auth.login.LoginContext("WSLogin",
    new com.ibm.websphere.security.auth.callback.WSGUICallbackHandlerImpl());
    
    // crear un LoginContext y especificar la implementación de CallbackHandler
    // la implementación de CallbackHandler determina cómo se recopilan los datos de autenticación
    // en este caso, los datos de autenticación son recopilados por la solicitud de inicio de sesión
    //   y se pasan al mecanismo de autenticación implementado por LoginModule.
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: no se ha podido crear una instancia de contexto
    de inicio de sesión con la excepción: " 
    + e.getMessage());
    e.printStackTrace();
    
    // puede que no se otorgue el permiso javax.security.auth.AuthPermission "createLoginContext"
    //   a la aplicación, o que la Configuración de inicio de sesión JAAS no esté definida.
    }
    
    if (lc != null)
             try {
    lc.login();  // realizar inicio de sesión
    javax.security.auth.Subject s = lc.getSubject();
    // obtener el sujeto autenticado
    
    // Invocar los recursos J2EE utilizando el sujeto autenticado
    com.ibm.websphere.security.auth.WSSubject.doAs(s,
    new java.security.PrivilegedAction() {
    public Object run() {
             try {
    bankAccount.deposit(100.00);  // donde bankAccount es un EJB protegido
    } catch(Exception e) {
    System.out.println("ERROR: error al acceder a recurso EJB, excepción: " 
    + e.getMessage());
    e.printStackTrace();
    }
    return null;
    }
    }
    );
    
    // Recuperar el nombre del principal del sujeto
    // para poder indicar al usuario que el inicio de sesión ha sido satisfactorio,
    // sólo debe haber un WSPrincipal.
    java.util.Set ps = 
    s.getPrincipals(com.ibm.websphere.security.auth.WSPrincipal.class);
    java.util.Iterator it = ps.iterator();
    while (it.hasNext()) {
    com.ibm.websphere.security.auth.WSPrincipal p =
    (com.ibm.websphere.security.auth.WSPrincipal) it.next();
    System.out.println("Principal: " + p.getName());
    }
    } catch (javax.security.auth.login.LoginException e) {
    System.err.println("ERROR: inicio de sesión no satisfactorio con la excepción: " +  e.getMessage());
    e.printStackTrace();
    
    // error en el inicio de sesión, deberá proporcionar la lógica de reinicio de sesión
    }
    }
    ...
    }

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_migratecorba
File name: tsec_migratecorba.html