Programmgesteuerte JAAS-Anmeldung im Liberty-Anwendungs-Client-Container konfigurieren

Der Liberty-Anwendungs-Client-Container kann so konfiguriert werden, dass eine programmgesteuerte JAAS-Anmeldung verwendet wird.

Vorbereitende Schritte

Sehen Sie sich die verschiedenen Methoden zur Authentifizierung von Benutzern im Anwendungs-Client-Container an und entscheiden Sie dann, welche Option für die programmgesteuerte Anmeldung sich für Ihre Umgebung am besten eignet. Weitere Einzelheiten finden Sie im Abschnitt Authentifizierung im Liberty-Anwendungs-Client-Container.

Informationen zu diesem Vorgang

Die programmgesteuerte Anmeldung: ist ein Typ von Formularanmeldung, die für die Authentifizierung Anmeldeformulare in der Anwendungsdarstellung unterstützt. Dieser Ansatz setzt voraus, dass der Anwendungsentwickler die Berechtigungsnachweise des Benutzers erfasst und diesen Benutzer authentifiziert. Bei dieser Methode wird das JAAS-Framework genutzt, um die Berechtigungsnachweise eines Benutzers zur Authentifizierung an den Server zu senden. Das JAAS-Framework setzt sich aus der Erstellung eines Anmeldekontexts durch Festlegung einer JAAS-Anmeldekonfiguration und der Verwendung eines Callback-Handlers für die Erfassung der Berechtigungsnachweise des Benutzers zusammen. Wenn ein Subjekt aus dem Anmeldekontext abgerufen wird, können Sie eine Liberty-Sicherheits-API verwenden, um dieses Subjekt im Thread festzulegen, sodass es für Ihren abgehenden Aufruf an den Server verwendet wird.
Die JAAS-Anmeldekonfiguration legt fest, wie und welche Anmeldemodule für die Authentifizierung verwendet werden. Im Folgenden sind die JAAS-Anmeldekonfigurationen beschrieben, die von Liberty im Client bereitgestellt werden:
  • WSLogin-JAAS-Anmeldekonfiguration: Eine generische JAAS-Anmeldekonfiguration, die eine Anwendungs-Client-Container-Anwendung von Liberty verwenden kann, um die auf einer Benutzer-ID und einem Kennwort basierende Authentifizierung durchzuführen. Diese Konfiguration unterstützt jedoch den im Implementierungsdeskriptor des Clientanwendungsmoduls angegebenen CallbackHandler-Handler.
  • ClientContainer-JAAS-Anmeldekonfiguration: Diese JAAS-Anmeldekonfiguration erkennt den CallbackHandler-Handler im Implementierungsdeskriptor des Clientanwendungsmoduls, sofern dieser angegeben ist. Wenn im Implementierungsdeskriptor kein Handler angegeben ist, wird der über das Programm angegebene Handler verwendet.

    Die in der JAAS-Anmeldekonfiguration angegebenen Anmeldemodule implementieren eine bestimmte Authentifizierungstechnologie. Ein Anmeldemodul kann Berechtigungsnachweise eines Benutzers über die Schnittstelle javax.security.auth.callback.CallbackHandler erfassen. Liberty stellt eine Implementierung ohne Eingabeaufforderungen der Schnittstelle CallbackHandler mit dem Namen com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl bereit. Diese Implementierung ermöglicht einem Anwendungsentwickler, die Berechtigungsnachweise direkt in der Anwendung anzugeben, sodass der Benutzer nicht zur Eingabe aufgefordert wird. Die CallbackHandler-Implementierung kann auf zwei Arten angegeben werden:

    • Sie können Ihre Implementierung über das Programm als Argument für den Konstruktor javax.security.auth.login.LoginContext angeben, z. B.:
      LoginContext logincontext = new LoginContext("ClientContainer", new WSCallbackHandlerImpl("user", "password"));
    • Sie können den Namen Ihrer Implementierung im Implementierungsdeskriptor des Clientanwendungsmoduls (application-client.xml) angeben, z. B.:
      <callbackhandler>com.acme.callbackhandler.WSCallbackHandlerImpl/<callbackhandler>
Anmerkung: Die WSLogin-Anmeldekonfiguration erkennt die zweite Option mit der Angabe eines CallbackHandler-Handlers im Implementierungsdeskriptor nicht.

Vorgehensweise

  1. Fügen Sie das Feature appSecurityClient-1.0 Ihrer Datei client.xml hinzu.
    <feature>appSecurityClient-1.0</feature>
  2. Konfigurieren Sie SSL für Ihren Client:
    1. Optional: Verwenden Sie den Befehl securityUtility, um ein SSL-Zertifikat für den Client zu erstellen, z. B.:
      securityUtility createSSLCertificate --client=myClient --password=liberty
    2. Empfohlen: Verwenden Sie den Befehl securityUtility, um ein xor-codiertes Kennwort zu erstellen. Geben Sie beispielsweise Folgendes ein, um das Kennwort liberty zu codieren:
      securityUtility encode liberty
    3. Fügen Sie Ihrer Datei client.xml ein Element keyStore hinzu. Im folgenden Beispiel wird die SSL-Standardkonfiguration verwendet:
      <keyStore id="defaultKeyStore" password="{xor}MzY9Oi0rJg=="/> <!-- pwd:
      liberty -->
  3. Erstellen Sie im Anwendungscode ein Element Subject, das die JAAS-Anmeldekonfiguration ClientContainer und den Callback-Handler WSCallbackHandlerImpl verwendet.
    1. Fügen Sie den folgenden Code hinzu, bevor die Anwendung eine abgehende Anforderung absetzt. Ändern Sie userName und userPassword in gültige Berechtigungsnachweise für einen Benutzer, der in der Benutzerregistry des Zielservers vorhanden ist.
      CallbackHandler wscbh = new WSCallbackHandlerImpl("userName", "userPassword");
      LoginContext ctx = null;
      try  {
            ctx = new LoginContext("ClientContainer", wscbh);
      } catch (LoginException le) {
            le.printStackTrace();
      }
      try  {
            		ctx.login();
      } catch (LoginException le) {
            le.printStackTrace();
      }
      				Subject subject = ctx.getSubject();
  4. Legen Sie das im vorherigen Schritt abgerufene Subject-Element im Thread fest und verwenden sie dieses Subject-Element, um eine EJB zu suchen. Verwenden Sie die API WSSubject.doAs oder doAsPrivilieged, um diese Aktion auszuführen. Das Subject-Element im com.ibm.websphere.security.auth.WSSubject.doAs bzw. com.ibm.websphere.security.auth.WSSubject.doAsPrivileged-Codeblock wird für J2EE-Ressourcenberechtigungsprüfungen (Java™ Platform, Enterprise Edition) verwendet.
    WSSubject.doAs(subject, new PrivilegedAction() {
        		public Object run() {
               try  {
                      // EJB suchen und aufrufen
               } catch (Exception ex) {
                      ex.printStackTrace();
               }
               return null;
        }
    });
  5. Wenn die Java-2-Sicherheit in Ihrem Client aktiviert ist und Ihr Anwendungscode JAAS- oder Liberty-Sicherheits-APIs aufruft, fügen Sie der Datei permissions.xml bzw. der Datei client.xml der Anwendung die erforderlichen Java-2-Sicherheitsberechtigungen hinzu. Weitere Einzelheiten zu den durch Java-2-Sicherheitsberechtigungen geschützten Liberty-Sicherheits-APIs finden Sie unter Programming Interfaces (APIs). Weitere Einzelheiten finden Sie unter Java-2-Sicherheit.

Nächste Schritte

Wie im Server können Sie ein angepasstes Anmeldemodul verwenden, um weitere Authentifizierungsentscheidungen zu treffen, oder dem Subjekt Informationen hinzufügen, um differenziertere Authentifizierungsentscheidungen in Ihrer Clientanwendung zu treffen. Weitere Einzelheiten finden Sie unter Angepasstes JAAS-Anmeldemodl für den Liberty-Anwendungs-Client-Container konfigurieren.

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_config_jaas_prog_login
Dateiname: twlp_config_jaas_prog_login.html