Sun Java Enterprise System 2005Q4 Technischer Überblick

Integrierte Identitäts- und Sicherheitsdienste

Eine wichtige Funktion von Java Enterprise System besteht in der integrierten Verwaltung von Benutzeridentitäten und dem integrierten Authentifizierungs- und Autorisierungs-Framework.

In den folgenden Abschnitten finden Sie den technischen Hintergrund für das Verständnis der integrierten Identitäts- und Sicherheitsdienste, die Java Enterprise System bietet:

Einzelidentität

Innerhalb einer Java ES-Umgebung verfügt jeder Benutzer über eine einzelne integrierte Identität. Anhand dieser Einzelidentität kann dem Benutzer der Zugriff auf verschiedene Ressourcen gestattet werden, beispielsweise Portale, Webseiten und Dienste wie Nachrichtendienste, Kalenderdienste und Instant Messaging.

Diese integrierte Identitäts- und Sicherheitsfunktion beruht auf einer engen Zusammenarbeit zwischen Directory Server, Access Manager und anderen Java ES-Komponenten.

Der Benutzerzugriff auf einen Dienst oder eine Ressource von Java ES wird gewährt, indem die benutzerspezifischen Informationen in einem einzelnen Benutzereintrag in einem Benutzer-Repository oder Verzeichnis gespeichert werden. Zu diesen Informationen gehören normalerweise Angaben wie ein eindeutiger Name und ein Passwort, eine E-Mail-Adresse, die Funktion innerhalb einer Organisation, Webseiteneinstellungen usw. Die Informationen im Benutzereintrag können zur Authentifizierung des Benutzers, zur Autorisierung des Zugriffs auf bestimmte Ressourcen und zur Bereitstellung verschiedener Dienste für den jeweiligen Benutzer verwendet werden.

Bei Java Enterprise System werden die Benutzereinträge in einem von Directory Server bereitgestellten Verzeichnis gespeichert. Wenn ein Benutzer einen von einer Java ES-Komponente bereitgestellten Dienst anfordern möchte, verwendet dieser Dienst Access Manager für die Authentifizierung des Benutzers und für die Autorisierung des Zugriffs auf bestimmte Ressourcen. Der angeforderte Dienst prüft die im Verzeichniseintrag des Benutzers enthaltenen benutzerspezifischen Konfigurationsangaben. Der Dienst verwendet diese Informationen, um die vom Benutzer angeforderten Aufgaben durchzuführen.

Die folgende Abbildung illustriert den Zugriff auf Benutzereinträge für die Durchführung der Benutzerauthentifizierung und -autorisierung hinsichtlich der Bereitstellung eines Dienstes für den Benutzer.

Abbildung 3–1 Ein einzelner Benutzereintrag unterstützt viele Dienste

Diagramm, das zeigt, wie mehrere Java Enterprise System-Komponenten mit einem einzigen Benutzereintrag in einem Verzeichnis interagieren.

Eine der sich aus diesem System ergebenden Funktionen besteht darin, dass sich ein Benutzer im Web bei jedem Java ES-Dienst anmelden kann und dadurch automatisch bei den anderen Diensten des Systems authentifiziert wird. Diese leistungsstarke Java Enterprise System-Funktion ist unter der Bezeichnung Single Sign-On bekannt.

Authentifizierung und Single Sign-On

Die Authentifizierungs- und Autorisierungsdienste von Java ES werden durch Access Manager bereitgestellt. Access Manager verwendet Informationen aus Directory Server, um als Broker für die Interaktion von Benutzern mit Java ES-Webdiensten und anderen webbasierten Diensten in einem Unternehmen zu fungieren.

Access Manager verwendet außerdem eine externe Komponente, den so genannten Richtlinienagenten. Der Richtlinienagent stellt eine Verbindung zu dem Webserver her, der als Host für einen Dienst bzw. eine Ressource fungiert, die durch Access Manager gesichert ist. Der Richtlinienagent schaltet sich bei Anforderungen des Benutzers an die gesicherten Ressourcen im Namen von Access Manager ein. Für einige Java ES-Komponenten, wie Portal Server und Communications Express, werden die Funktionen des Richtlinienagenten von einer Access Manager-Unterkomponente bereitgestellt (siehe Sun Java System Access Manager 7 2005Q4).

Authentifizierung

Access Manager beinhaltet einen Authentifizierungsdienst zur Überprüfung der Identitäten der Benutzer, die (über HTTP oder HTTPS) Zugriff auf Webdienste innerhalb eines Unternehmens anfordern. Beispiel: Ein Firmenangestellter, der die Telefonnummer eines Kollegen nachschlagen muss, verwendet einen Browser, um zum Online-Telefonbuch des Unternehmens zu gelangen. Um sich beim Telefonbuchdienst anzumelden, muss der Benutzer eine Benutzer-ID und ein Passwort angeben.

Die Authentifzierungssequenz ist in Abbildung 3–2 dargestellt. Ein Richtlinienagent schaltet sich in die Anfrage, die eine Anmeldung beim Telefonbuch enthält, ein (1) und schickt eine Anfrage an den Authentifizierungsdienst (2). Der Authentifizierungsdienst prüft die Benutzer-ID und das Kennwort anhand der in Directory Server speicherten Informationen (3). Wenn die Anmeldeanforderung gültig ist, wird der Benutzer authentifiziert (4, 5 und 6) und dem Mitarbeiter wird das Firmentelefonbuch angezeigt (7). Wenn die Anmeldeanforderung nicht gültig ist, wird eine Fehlermeldung generiert und die Authentifizierung schlägt fehl.

Der Authentifizierungsdienst unterstützt auch zertifikatbasierte Authentifizierungen über HTTPS.

Abbildung 3–2 Authentifizierungssequenz

Diagramm mit der Authentifizierungssequenz. Beteiligt sind Webbrowser, Richtlinienagent, Authentifizierungsdienst, Sitzungsdienst und Directory Server.

Single Sign-On

In dem in den vorherigen Abschnitten beschriebenen Authentifizierungsszenario fehlt ein wichtiger Schritt. Wenn die Authentifizierungsanfrage eines Benutzers überprüft ist, wird der Sitzungsdienst von Access Manager aufgerufen (4), wie in Abbildung 3–2 dargestellt. Der Sitzungsdienst erstellt ein Sitzungs-Token, das Identitätsinformationen des Benutzers und eine Token-ID enthält (5). Das Sitzungs-Token wird an den Richtlinienagenten zurückgesendet (6), der es (als Cookie) an den Browser weiterleitet (7), von dem die Authentifizierungsanforderung ausging.

Wenn der authentifizierte Benutzer versucht, auf einen anderen gesicherten Dienst zuzugreifen, leitet der Browser das Sitzungs-Token an den entsprechenden Richtlinienagenten weiter. Der Richtlinienagent überprüft mit dem Sitzungsdienst, ob die frühere Authentifizierung des Benutzers noch gültig ist, und der Benutzer erhält Zugriff auf den zweiten Dienst, ohne dass er noch einmal eine Benutzer-ID und ein Passwort eingeben muss.

Ein Benutzer muss sich daher nur ein einziges Mal anmelden, um bei mehreren von Java Enterprise System bereitgestellten webbasierten Diensten authentifiziert zu werden. Die Single Sign-On-Authentifizierung bleibt gültig, bis sich der Benutzer explizit abmeldet oder die Sitzung abläuft.

Autorisierung

Access Manager beinhaltet auch einen Richtliniendienst, mit dem der Zugriff auf webbasierte Ressourcen in einer Java ES-Umgebung gesteuert werden kann. EineRichtlinie ist eine Regel, die angibt, wer autorisiert ist, unter bestimmten Bedingungen auf eine bestimmte Ressource zuzugreifen. Die Autorisierungssequenz ist in der folgenden Abbildung dargestellt.

Abbildung 3–3 Autorisierungssequenz

Diagramm mit der im Text beschriebenen Autorisierungssequenz. Beteiligt sind der Webbrowser, Richtlinienagent, Richtliniendienst und Directory Server.

Wenn ein authentifizierter Benutzer eine Anforderung für eine durch Access Manager gesicherte Ressource abschickt (1), benachrichtigt der Richtlinienagent den Richtliniendienst (2), der anhand der in Directory Server vorhandenen Informationen (3) die Zugriffsrichtlinie für die Ressource prüft, um festzustellen, ob der Benutzer über die erforderlichen Zugriffsberechtigungen verfügt (4). Wenn der Benutzer zugriffsberechtigt ist (5), wird die Ressourcenanfrage ausgeführt (6).

Access Manager bietet die Mittel, die erforderlich sind, um innerhalb eines Unternehmens Richtlinien zu definieren, zu bearbeiten, zu gewähren, zu widerrufen und zu löschen. Die Richtlinien werden in Directory Server gespeichert und über richtlinienbezogene Attribute in Organisationseinträgen konfiguriert. Es können auch Rollen für Benutzer definiert und in Richtliniendefinitionen integriert werden.

Die Access Manager-Richtlinienagenten sind für die Durchsetzung der Richtlinien zuständig. Wenn der Richtliniendienst eine Zugriffsanforderung zurückweist, verhindert der Richtlinienagent, dass der betreffende Benutzer auf die gesicherten Ressourcen zugreift.