Programmgesteuerte 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 programmgesteuerte 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, passwordUtilities-1.0 und jca-1.7 in der Datei server.xml hinzu. Sie können auch appSecurity-2.0, passwordUtilities-1.0 und jca-1.6 hinzufügen. Beispiel:
    <featureManager> 
       <feature>appSecurity-2.0</feature>
       <feature>passwordUtilities-1.0</feature>
       <feature>jca-1.7</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 programmgesteuerte 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



Symbol für Zeitmarke Letzte Aktualisierung: 01.12.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_dev_prog_login_auth_data
Dateiname: twlp_dev_prog_login_auth_data.html