programmsteuerte Anmeldung zum Abrufen von Authentifizierungsdaten entwickeln

Sie können das JAAS-Anmeldeframework (Java Authentication and Authorization Service) verwenden, um die Authentifizierungsdaten von Ihrer Anwendung abzurufen.

Informationen zu diesem Vorgang

Ihre Anwendung kann eine programmsteuerte JAAS-Anmeldung unter Verwendung des JAAS-Kontexteintragsnamens DefaultPrincipalMapping durchführen, um ein Subject-Objekt mit einer javax.resource.spi.security.PasswordCredential-Instanz im privaten Berechtigungsnachweissatz abrufen, der den für ein Element des Typs authData definierten Benutzernamen und das zugehörige Kennwort definiert.

Vorgehensweise

  1. Fügen Sie die Features appSecurity-2.0 und passwordUtilities-1.0 der Datei server.xml hinzu. Beispiel:
    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>passwordUtilities-1.0</feature>
    </featureManager>
  2. Konfigurieren Sie ein Element des Typs authData in der Datei server.xml. Beispiel:
    <authData id="myAuthData" user="myUser" password="myPassword"/> <!-- Das Kennwort kann auch codiert werden --> 
    Verschlüsseln Sie das Kennwort in der Konfiguration. Sie können den codierten Wert mit dem Befehl "securityUtility encode" abrufen. 
  3. Führen Sie eine programmsteuerte Anmeldung mit dem JAAS-Anmeldekontexteintragsnamen DefaultPrincipalMapping über Ihr Anwendungsservlet oder Ihre Enterprise-Bean durch und ersetzen Sie dabei den Zuordnungsalias durch den erforderlichen Alias. Beispiel:
    HashMap map = new HashMap();
    map.put(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS, "myAuthData"); // Wert durch eigenen Alias ersetzen.
    CallbackHandler callbackHandler = new com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandler(map, null);
    LoginContext loginContext = new LoginContext("DefaultPrincipalMapping", callbackHandler);
    loginContext.login();
    Subject subject = loginContext.getSubject();
    Set<javax.resource.spi.security.PasswordCredential> creds = subject.getPrivateCredentials(javax.resource.spi.security.PasswordCredential.class);
    PasswordCredential passwordCredential = creds.iterator().next();
    Anmerkung: Der Einfachheit halber wird die Fehlerbehandlung nicht angezeigt. Eine Ausnahme des Typs javax.security.auth.login.LoginException wird zurückgegeben, wenn der angeforderte Authentifizierungsalias nicht vorhanden oder fehlerhaft ist.
  4. Rufen Sie den Benutzernamen und das Kennwort von PasswordCredential ab. Beispiel:
    String userName = passwordCredential.getUserName();
    char[] password = passwordCredential.getPassword();
    // Benutzername und Kennwort verwenden. 
  5. Wenn die Java-2-Sicherheit aktiviert ist, muss die Anwendung die Berechtigung javax.security.auth.PrivateCredentialPermission haben. Erteilen Sie die Berechtigung beispielsweise in der Datei META-INF/permissions.xml der Anwendung, um auf das Objekt PasswordCredential zuzugreifen:
    <?xml version="1.0" encoding="UTF-8"?>
    <permissions xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/permissions_7.xsd" version="7">
    
      <permission>
        <class-name>javax.security.auth.PrivateCredentialPermission</class-name>
        <name>javax.resource.spi.security.PasswordCredential * "*"</name>
        <actions>read</actions>
      </permission>
    
      <!-- Weitere Berechtigungen -->
    
    </permissions>

    Weitere Informationen zur Java-2-Sicherheit finden Sie unter Liberty: Java-2-Sicherheit.


Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_dev_prog_login_auth_data.html