Versionshinweise zu Sun Java System Message Queue 4.1

JAAS-Unterstützung

Neben den dateibasierten und den LDAP-basierten integrierten Authentifizierungsmechanismen unterstützt Message Queue auch Java Authentication and Authorization Service (JAAS), sodass Sie verschiedene Dienste zum Authentifizieren von Message Queue-Clients mit dem Broker verbinden können. In diesem Abschnitt werden die Informationen beschrieben, die der Broker für einen JAAS-konformen Authentifizierungsdienst bereitstellt. Ferner wird die Konfiguration des Brokers für die Verwendung eines solchen Dienstes beschrieben.

Die JAAS-API kann im Rahmen dieses Dokuments nicht beschrieben werden. Wenn Sie mehr zu diesem Thema wissen möchten, finden Sie in den folgenden Quellen weitere Informationen.

Die JAAS-API ist eine wichtige API in J2SE und daher ein wesentlicher Teil der Message Queue-Laufzeitumgebung. JAAS definiert eine Abstraktionsschicht zwischen einer Anwendung und einem Authentifizierungsmechanismus, der es ermöglicht, den gewünschten Mechanismus einzubinden, ohne den Anwendungscode zu ändern. Beim Message Queue-Dienst befindet sich die Abstraktionsschicht zwischen dem Broker (Anwendung) und einem Authentifizierungsanbieter. Durch die Festlegung einiger Broker-Eigenschaften kann ein beliebiger JAAS-konformer Authentifizierungsdienst eingebunden und ohne Unterbrechung oder Änderung des Broker-Codes aktualisiert werden.

Sie können JMX-Clients zum Verwalten des Brokers verwenden, wenn Sie die JAAS-basierte Authentifizierung verwenden; vor dem Start des Brokers muss die JAAS-Unterstützung jedoch manuell eingerichtet werden (durch die Festlegung von JAAS-bezogenen Broker-Eigenschaften). Diese Eigenschaften können jedoch nicht über die JMX API geändert werden.

Elemente von JAAS

Abbildung 1–1 zeigt die grundlegenden Elemente von JAAS: ein JAAS-Client, ein JAAS-konformer Authentifizierungsdienst und eine JAAS-Konfigurationsdatei.

Abbildung 1–1 JAAS-Elemente

Diese Abbildung zeigt die Elemente, die für die JAAS-konforme Authentifizierung erforderlich sind. Der Text zur Erläuterung der Abbildung beschreibt den Inhalt.

Im nächsten Abschnitt wird beschrieben, wie der Message Queue-Dienst diese Elemente für eine JAAS-konforme Authentifizierung verwendet.

JAAS und Message Queue

Die nächste Abbildung zeigt, wie JAAS vom Message Queue-Broker verwendet wird. Sie zeigt eine komplexere Implementierung des JAAS-Modells aus der vorherigen Abbildung.

Abbildung 1–2 Verwendung von JAAS durch Message Queue

Die Abbildung zeigt, wie die JAAS-konforme Authentifizierung mit Message Queue verwendet wird. Der folgende Text erläutert den Inhalt.

Wie im einfacheren Beispiel gezeigt, befinden sich Authentifizierungsdienst und Broker nicht in derselben Schicht. Der Authentifizierungsdienst umfasst mindestens ein Anmeldemodul (LoginModule) und bei Bedarf zusätzliche Authentifizierungsmodule. Die Anmeldemodule werden in derselben virtuellen Java-Maschine ausgeführt wie der Broker. Der Message Queue-Broker wird dem Anmeldemodul als LogInContext angezeigt und kommuniziert mit dem Anmeldemodul über einen CallBackHandler, der Teil des Broker-Laufzeitcodes ist.

Der Authentifizierungsdienst stellt ferner eine JAAS-Konfigurationsdatei bereit, welche Einträge für die Anmeldemodule enthält. Die Konfigurationsdatei gibt die Reihenfolge an, in der die Module verwendet werden sollen, sowie einige Bedingungen für deren Verwendung. Beim Start des Brokers ermittelt JAAS die Konfigurationsdatei über die Java-Systemeigenschaft java.security.auth.login.config oder die Java-Sicherheitseigenschaftendatei. Anschließend wird basierend auf dem Wert der Broker-Eigenschaft imq.user_repository.jaas.name ein Eintrag in der JAAS-Konfigurationsdatei ausgewählt. Der Eintrag gibt an, welche Anmeldemodule für die Authentifizierung verwendet werden. Wie die Abbildung zeigt, kann der Broker mehrere Anmeldemodule verwenden. (Die Beziehung zwischen der Konfigurationsdatei, dem Anmeldemodul und dem Broker wird in Abbildung 1–3 veranschaulicht.)

Die Tatsache, dass der Broker einen JAAS-Plug-In-Authentifizierungsdienst verwendet, ist für den Message Queue-Client vollständig transparent. Der Client bleibt wie zuvor mit dem Broker verbunden und übergibt einen Benutzernamen und ein Passwort. Der Broker wiederum verwendet einen Callback-Handler, um diese Informationen an den Authentifizierungsdienst zu übergeben; und der Dienst verwendet diese Informationen, um den Benutzer zu authentifizieren und die Ergebnisse zurückzugeben. Bei erfolgreicher Authentifzierung lässt der Broker die Verbindung zu; wenn die Authentifizierung nicht erfolgreich ist, gibt die Clientlaufzeit eine JMS-Sicherheitsausnahme zurück, die der Client verarbeiten muss.

Nach der Authentifizierung des Message Queue-Clients wird die normale Ausführung des Brokers fortgesetzt (sofern keine weiteren Authentifizierungsvorgänge erforderlich sind); er ermittelt anhand der Zugriffssteuerungsdatei, ob der authentifizierte Client für die ausgeführten Aktionen berechtigt ist: Zugreifen auf ein Ziel, Verwenden einer Nachricht, Durchsuchen einer Warteschlange usw.

Einrichten der JAAS-konformen Authentifizierung

Das Einrichten der JAAS-konformen Authentifizierung umfasst das Festlegen von Broker- und Systemeigenschaften zur Auswahl dieses Authentifizierungstyps, zum Angeben des Speicherorts der Konfigurationsdatei sowie zum Angeben der Einträge für die Anmeldemodule, die verwendet werden sollen.

In diesem Abschnitt wird die Beziehung zwischen dem JAAS-Client, den Anmeldemodulen und der JAAS-Konfigurationsdatei erläutert. Ferner werden die erforderlichen Schritte zum Einrichten der JAAS-konformen Authentifizierung beschrieben. Die folgende Abbildung zeigt die Beziehung zwischen der Konfigurationsdatei, dem Anmeldemodul und dem Broker.

Abbildung 1–3 Einrichten der JAAS-Unterstützung

Diese Abbildung zeigt die Beziehung zwischen den JAAS-bezogenen Dateien. Der nachfolgende Text erläutert den Inhalt.

Wie in der Abbildung gezeigt, enthält die JAAS-Konfigurationsdatei MyJAASCFile.config Verweise auf mehrere Anmeldemodule, die unter einem Einstiegspunkt gruppiert sind. Der Broker ermittelt die Konfigurationsdatei anhand der Java-Systemeigenschaft java.security.auth.login.config oder der Java-Sicherheitseigenschaftendatei. Die zu verwendenden Anmeldemodule werden anhand der Broker-Eigenschaft imq.user_repository.jaas.name ermittelt, welche den gewünschten Eintrag in der Konfigurationsdatei angibt. Die Klassen für diese Module befinden sich im Verzeichnis lib/ext.

Zum Einrichten der JAAS-Unterstützung für Message Queue müssen die folgenden Schritte ausgeführt werden. (In einer Entwicklungsumgebung kann der Entwickler all diese Schritte ausführen. In einer Produktionsumgebung würde der Administrator einige dieser Schritte übernehmen.)

  1. Erstellen Sie mindestens eine Anmeldemodulklasse, welche den Authentifizierungsdienst implementiert. Im Folgenden sind die JAAS-Callback-Typen aufgelistet, die der Broker unterstützt.

    javax.security.auth.callback.LanguageCallback

    Der Broker verwendet diesen Callback-Typ, um das Gebietsschema an den Authentifizierungsdienst zu übergeben, in dem der Broker ausgeführt wird. Dieser Wert kann für die Lokalisierung verwendet werden.

    javax.security.auth.callback.NameCallback

    Der Broker verwendet diesen Callback-Typ, um den Benutzernamen an den Authentifizierungsdienst zu übergeben, den der Message Queue-Client beim Anfordern der Verbindung angegeben hat.

    javax.security.auth.callback.TextInputCallback

    Der Broker verwendet diesen Callback-Typ, um den Wert von imq.authentication.type für den Authentifizierungsdienst anzugeben, wenn TextInputCallback.getPrompt() imq.authentication.type lautet. Gegenwärtig ist für dieses Feld ausschließlich der Wert basic zulässig. Mit diesem Wert wird eine Base-64-Passwortverschlüsselung festgelegt.

    javax.security.auth.callback.PasswordCallback

    Der Broker verwendet diesen Callback-Typ, um das Passwort, das der Message Queue-Client beim Anfordern der Verbindung angegeben hat, an den Authentifizierungsdienst zu übergeben.

    javax.security.auth.callback.TextOutputCallback

    Der Broker verwendet diesen Callback-Typ, um Protokollierungsdienste für den Authentifizierungsdienst bereitzustellen, indem die Textausgabe in der Protokolldatei des Brokers protokolliert wird. Die Callback-Meldungstypen ERROR, INFORMATION, WARNING werden den Broker-Protokollebenen ERROR, INFO, und WARNING zugeordnet.

  2. Erstellen Sie eine JAAS-Konfigurationsdatei mit Einträgen, welche auf die Anmeldemodulklassen verweisen und den Speicherort dieser Datei für den Message Queue-Administrator angeben. (Die Datei kann sich in einem Remote-Verzeichnis befinden, und der Speicherort kann als URL angegeben werden.)

  3. Beachten Sie den Namen des Eintrags (der die Implementierungsklassen für die Anmeldung referenziert) in der JAAS-Konfigurationsdatei.

  4. Archivieren Sie die Klassen zur Implementierung der Anmeldemodule in einer .jar-Datei, und platzieren Sie die .jar-Datei im Message Queue-Verzeichnis lib/ext.

  5. Konfigurieren Sie die Broker-Eigenschaften, die sich auf die JAAS-Unterstützung beziehen. Diese Eigenschaften sind in Tabelle 1–2 beschrieben.

  6. Legen Sie die folgende Systemeigenschaft fest, um den Speicherort der JAAS-Konfigurationsdatei anzugeben.

    java.security.auth.login.config= Speicherort der JAAS-Konfigurationsdatei

    Sie können die Konfigurationsdatei beispielsweise beim Starten des Brokers angeben.

    imqbrokerd -Djava.security.auth.login.config=Speicherort der JAAS-Konfigurationsdatei

    Der Speicherort der JAAS-Konfigurationsdatei kann auch über andere Methoden angegeben werden. Weitere Informationen finden Sie unter

    http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/tutorials/LoginConfigFile.html

In der folgenden Tabelle sind die Broker-Eigenschaften aufgeführt, die zum Einrichten der JAAS-Unterstützung benötigt werden.

Tabelle 1–2 Broker-Eigenschaften für JAAS-Unterstützung

Eigenschaft 

Beschreibung 

imq.authentication.type

Wählen Sie den Wert basic, um die Base-64-Passwortverschlüsselung festzulegen. Dies ist der einzig zulässige Wert für die JAAS-Authentifizierung.

imq.authentication.basic.user_repository

Wählen Sie den Wert jaas, um die JAAS-Authentifizierung festzulegen.

imq.accesscontrol.type

Wählen Sie file.

imq.user_repository.jaas.name

Wählen Sie den Namen des gewünschten Eintrags (in der JAAS-Konfigurationsdatei), welcher die Anmeldemodule referenziert, die Sie als Authentifizierungsmechanismus verwenden möchten. Dies ist der Name, den Sie in Schritt 3 aufgezeichnet haben.

imq.user_repository.jaas.userPrincipalClass

Diese Eigenschaft wird von der Message Queue-Zugriffssteuerung verwendet und gibt die java.security.Principal-Implementierungsklasse in den Anmeldemodulen an, die der Broker zum Extrahieren des Prinzipalnamens verwendet, der das Benutzerelement in der Message Queue-Zugriffssteuerungsdatei darstellt. Wenn diese Eigenschaft nicht angegeben wird, wird stattdessen der Benutzername verwendet, der vom Message Queue-Client beim Anfordern einer Verbindung übergeben wurde.

imq.user_repository.jaas.groupPrincipalClass

Diese Eigenschaft wird von der Message Queue-Zugriffssteuerung verwendet und gibt die java.security.Principal-Implementierungsklasse in den Anmeldemodulen an, die der Broker zum Extrahieren des Prinzipalnamens verwendet, der das Gruppenelement in der Message Queue-Zugriffssteuerungsdatei darstellt. Wenn diese Eigenschaft nicht angegeben wird, werden die Gruppenregeln (sofern vorhanden) in der Message Queue-Zugriffssteuerungsdatei ignoriert.