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.
Umfassende Informationen zur JAAS-API finden Sie im Java Authentication and Authorization Service (JAAS) Reference Guide.
http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/JAASRefGuide.html
Informationen zum Schreiben eines Anmeldemoduls finden Sie im Java Authentication and Authorization Service (JAAS) LoginModule Developer's Guide.
http://java.sun.com/j2se/1.5.0/docs/guide/security/jaas/JAASLMDevGuide.html
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.
Abbildung 1–1 zeigt die grundlegenden Elemente von JAAS: ein JAAS-Client, ein JAAS-konformer Authentifizierungsdienst und eine JAAS-Konfigurationsdatei.
Der JAAS-Client ist eine Anwendung, die eine Authentifizierung unter Verwendung eines JAAS-konformen Authentifizierungsdienstes durchführen möchte. Sie kommuniziert mit diesem Dienst über ein Anmeldemodul (LoginModule) und ist für die Bereitstellung eines Callback-Handlers zuständig, den das Anmeldemodul zum Abrufen von Benutzername, Passwort und anderen relevanten Informationen aufrufen kann.
Der JAAS-konforme Authentifizierungsdienst umfasst mindestens ein Anmeldemodul sowie Logik zum Durchführen der erforderlichen Authentifizierung. Das Anmeldemodul kann die Authentifizierungslogik umfassen bzw. ein privates Protokoll oder eine API für die Kommunikation mit einem Modul verwenden, welche diese Logik bereitstellt.
Die JAAS-Konfigurationsdatei ist eine Textdatei, die der JAAS-Client zum Ermitteln der Anmeldemodule verwendet, die für die Kommunikation mit dem JAAS-konformen Dienst benötigt werden.
Im nächsten Abschnitt wird beschrieben, wie der Message Queue-Dienst diese Elemente für eine JAAS-konforme Authentifizierung verwendet.
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.
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.
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.
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.)
Erstellen Sie mindestens eine Anmeldemodulklasse, welche den Authentifizierungsdienst implementiert. Im Folgenden sind die JAAS-Callback-Typen aufgelistet, die der Broker unterstützt.
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.
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.
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.
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.
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.
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.)
Beachten Sie den Namen des Eintrags (der die Implementierungsklassen für die Anmeldung referenziert) in der JAAS-Konfigurationsdatei.
Archivieren Sie die Klassen zur Implementierung der Anmeldemodule in einer .jar-Datei, und platzieren Sie die .jar-Datei im Message Queue-Verzeichnis lib/ext.
Konfigurieren Sie die Broker-Eigenschaften, die sich auf die JAAS-Unterstützung beziehen. Diese Eigenschaften sind in Tabelle 1–2 beschrieben.
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. |