Desarrollo de módulos de inicio de sesión personalizados JAAS para la autenticación de base de datos

Puede desarrollar un módulo de inicio de sesión personalizado de Java™ Authentication and Authorization Service (JAAS) para añadir un nombre de usuario y una contraseña para autenticarse en una base de datos.

Acerca de esta tarea

Puede desarrollar un módulo de inicio de sesión personalizado JAAS que se puede invocar cuando se cree una conexión de base de datos que requiera autenticación. El módulo de inicio de sesión personalizado JAAS es responsable de crear una credencial de contraseña que contiene el nombre de usuario, la contraseña y la fábrica de conexiones gestionada. El módulo de inicio de sesión debe añadir la credencial de contraseña al conjunto de credenciales privadas del sujeto que se debe utilizar para autenticarse en la base de datos.

Procedimiento

  1. Cree una clase que implemente la interfaz javax.security.auth.spi.LoginModule.
  2. Guarde los campos necesarios en el método initialize. Por ejemplo:
    /** {@inheritDoc} */
    @SuppressWarnings("unchecked")
    @Override
    public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) {
      this.callbackHandler = callbackHandler;
      this.subject = subject;
      this.sharedState = (Map<String, Object>) sharedState;
      this.options = options;
    }
  3. Maneje las devoluciones de llamada WSManagedConnectionFactoryCallback y WSMappingPropertiesCallback en el método de inicio de sesión. Por ejemplo:
    /** {@inheritDoc} */
    @Override
    public boolean login() throws LoginException {
      ...
      Callback callbacks[] = new Callback[2];
      callbacks[0] = new WSManagedConnectionFactoryCallback("Target ManagedConnectionFactory: ");
      callbacks[1] = new WSMappingPropertiesCallback("Mapping Properties (HashMap): ");
      callbackHandler.handle(callbacks);
  4. Obtenga la fábrica de conexiones gestionada y las propiedades en el método de inicio de sesión. Por ejemplo:
    // El método getManagedConnectionFactory se debe
    utilizar tal como se indica para la compatibilidad con WebSphere
    tradicional
    ManagedConnectionFactory managedConnectionFactory = ((WSManagedConnectionFactoryCallback) callbacks[0]).getManagedConnectionFacotry();
    Map properties = ((WSMappingPropertiesCallback) callbacks[1]).getProperties();
  5. Obtenga el nombre de usuario y contraseña basándose en el alias de datos de autenticación o algún otro criterio. Por ejemplo:
    String alias = (String) properties.get(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS);
    String user = getUser(alias); // Implementación específica
    char[] password = getPassword(alias); // Implementación específica
  6. Cree un objeto javax.resources.spi.PasswordCredential con el nombre de usuario y la contraseña y establezca la fábrica de conexiones gestionada. Por ejemplo:
    javax.resource.spi.security.PasswordCredential passwordCredential = new PasswordCredential(user, password);
    passwordCredential.setManagedConnectionFactory(managedConnectionFactory);
  7. Añada la credencial de contraseña al sujeto en el método de confirmación. Por ejemplo:
    /** {@inheritDoc} */
    @Override
    public boolean commit() throws LoginException {
      // Verificar que el inicio de sesión se ha realizado satisfactoriamente antes de añadir PasswordCredential al sujeto.
      subject.getPrivateCredentials().add(passwordCredential);
      return true;
    }

Icono que indica el tipo de tema Tema de tarea



Icono de indicación de fecha y hora Última actualización: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_dev_jaas_custom_login_module
Nombre de archivo:twlp_dev_jaas_custom_login_module.html