Développement de modules de connexion personnalisés JAAS pour l'authentification vis-à-vis de la base de données

Vous pouvez développer un module de connexion personnalisé Java™ Authentication and Authorization Service (JAAS) pour l'ajout d'un nom d'utilisateur et d'un mot de passe permettant de s'authentifier auprès d'une base de données.

Pourquoi et quand exécuter cette tâche

Vous pouvez développer un module de connexion personnalisé JAAS qui peut être appelé lorsqu'une connexion de base de données nécessitant une authentification est créée. Le module de connexion personnalisé JAAS est chargé de créer des données d'identification par mot de passe qui contiennent le nom d'utilisateur, le mot de passe, ainsi que la fabrique de connexions gérées. Le module de connexion doit ajouter les données d'identification par mot de passe aux données d'identification privées du sujet définies pour permettre l'authentification auprès de la base de données.

Procédure

  1. Créez une classe qui implémente l'interface javax.security.auth.spi.LoginModule.
  2. Enregistrez les zones nécessaires dans la méthode initialize. Exemple :
    /** {@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. Gérez les rappels WSManagedConnectionFactoryCallback et WSMappingPropertiesCallback dans la méthode login. Exemple :
    /** {@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. Procurez-vous la fabrique de connexions gérées et les propriétés dans la méthode login. Exemple :
    // The method getManagedConnectionFactory must be used as shown for compatibility with WebSphere traditional
    ManagedConnectionFactory managedConnectionFactory = ((WSManagedConnectionFactoryCallback) callbacks[0]).getManagedConnectionFacotry();
    Map properties = ((WSMappingPropertiesCallback) callbacks[1]).getProperties();
  5. Procurez-vous le nom d'utilisateur et le mot de passe basés sur l'alias de données d'authentification ou d'autres critères. Exemple :
    String alias = (String) properties.get(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS);
    String user = getUser(alias); // Implementation specific
    char[] password = getPassword(alias); // Implementation specific
  6. Créez un objet javax.resources.spi.PasswordCredential avec le nom d'utiliasteur et le mot de passe et définissez la fabrique de connexions gérées. Exemple :
    javax.resource.spi.security.PasswordCredential passwordCredential = new PasswordCredential(user, password);
    passwordCredential.setManagedConnectionFactory(managedConnectionFactory);
  7. Ajoutez les données d'identification par mot de passe au sujet dans la méthode commit. Exemple :
    /** {@inheritDoc} */
    @Override
    public boolean commit() throws LoginException {
      // Verify that the login was successful before adding the PasswordCredential to the subject.
      subject.getPrivateCredentials().add(passwordCredential);
      return true;
    }

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_dev_jaas_custom_login_module.html