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.
- Erstellen Sie eine Klasse, die die Schnittstelle javax.security.auth.spi.LoginModule implementiert.
- 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;
}
- 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);
- 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();
- 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
- 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);
- 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;
}