Angepasste JAAS-Anmeldemodule für die Datenbankauthentifizierung entwickeln

Sie können ein angepasstes JAAS-Anmeldemodul (Java™ Authentication and Authorization Service) zum Hinzufügen eines Benutzernamens und Kennworts für die Authentifizierung bei einer Datenbank entwickeln.

Informationen zu diesem Vorgang

Sie können ein angepasstes JAAS-Anmeldemodul entwickeln, das aufgerufen werden kann, wenn eine Datenbankverbindung, für die Authentifizierung erforderlich ist, erstellt wird. Das angepasste JAAS-Anmeldemodul ist für die Erstellung eines Kennwortberechtigungsnachweises zuständig, der den Benutzernamen, das Kennwort und die Managed-Connection-Factory enthält. Das Anmeldemodul muss den Kennwortberechtigungsnachweis dem privaten Berechtigungsnachweissatz des Subjekts hinzugefügt werden, der für die Authentifizierung bei der Datenbank verwendet werden soll.

Vorgehensweise

  1. Erstellen Sie eine Klasse, die die Schnittstelle javax.security.auth.spi.LoginModule implementiert.
  2. Speichern Sie die erforderlichen Felder in der Initialisierungsmethode. Beispiel:
    /** {@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. Bearbeiten Sie die Callbacks WSManagedConnectionFactoryCallback und WSMappingPropertiesCallback in der Anmeldemethode. Beispiel:
    /** {@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. Rufen Sie die Managed-Connection-Factory und Eigenschaften in der Anmeldemethode ab. Beispiel:
    // Die Methode getManagedConnectionFactory muss für die Kompatibilität mit WebSphere Traditional wie gezeigt verwendet werden
    ManagedConnectionFactory managedConnectionFactory = ((WSManagedConnectionFactoryCallback) callbacks[0]).getManagedConnectionFacotry();
    Map properties = ((WSMappingPropertiesCallback) callbacks[1]).getProperties();
  5. Rufen Sie den Benutzernamen und das Kennwort basierend auf dem Authentifizierungsdatenalias oder anderen Kriterien ab. Beispiel:
    String alias = (String) properties.get(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS);
    String user = getUser(alias); // Implementierungsspezifisch
    char[] password = getPassword(alias); // Implementierungsspezifisch
  6. Erstellen Sie ein Objekt javax.resources.spi.PasswordCredential mit dem Benutzernamen und Kennwort und legen Sie die Managed-Connection-Factory fest. Beispiel:
    javax.resource.spi.security.PasswordCredential passwordCredential = new PasswordCredential(user, password);
    passwordCredential.setManagedConnectionFactory(managedConnectionFactory);
  7. Fügen Sie dem Subjekt den Kennwortberechtigungsnachweis in der Festschreibungsmethode hinzu. Beispiel:
    /** {@inheritDoc} */
    @Override
    public boolean commit() throws LoginException {
      // Sicherstellen, dass die Anmeldung erfolgreich war, bevor dem Subjekt der Kennwortberechtigungsnachweis (PasswordCredential) hinzugefügt wird.
      subject.getPrivateCredentials().add(passwordCredential);
      return true;
    }

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_dev_jaas_custom_login_module.html