OpenID Connect-Client in Libety konfigurieren
Sie können einen Liberty-Server so konfigurieren, dass er als OpenID Connect-Client oder Relying Party fungiert, um vom Web-SSO zu profitieren und einen OpenID Connect-Provider als Identitätsprovider zu nutzen.
Informationen zu diesem Vorgang
Wenn Sie einen Liberty-Server so konfigurieren möchten, dass er als OpenID Connect-Client agiert, müssen Sie neben anderen Konfigurationsdaten das Feature openidConnectClient-1.0 aktivieren.
Vorgehensweise
- Fügen Sie das Liberty-Feature openidConnectClient-1.0 und alle weiteren benötigten Features zur
Datei server.xml hinzu.
Das Feature ssl-1.0 ist auch für das Feature openidConnectClient-1.0 erforderlich. Fügen Sie die folgende Elementdeklaration
im Element featureManager Ihrer Datei server.xml hinzu:
<feature>openidConnectClient-1.0</feature> <feature>ssl-1.0</feature>
- Konfigurieren Sie ein Element openidConnectClient. Im Folgenden sehen Sie ein Beispiel
für eine Minimalkonfiguration, die mit dem OpenID Connect-Provider des Liberty-Servers funktioniert.
Dem Client muss unter einer URL mit dem gegebenen Muster eine konfigurierte Anwendung zur Verfügung stehen, die Umleitungsanforderungen von einem OpenID Connect-Provider handhaben kann. Diese URL muss auch genau mit der URL übereinstimmen, die für den Client mit dem OP registriert ist.
Anmerkung: Der Client in diesem Beispiel erwartet, dass der SSL-Port auf 443 gesetzt ist.<openidConnectClient id="client01" clientId="client01" clientSecret="{xor}LDo8LTor" authorizationEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/authorize" tokenEndpointUrl="https://server.example.com:443/oidc/endpoint/OidcConfigSample/token"> </openidConnectClient>
Für dieses Beispiel einer Minimalkonfiguration werden die folgenden Standardwerte vorausgesetzt:- scope=openid profile: Der Bereich openid ist erforderlich. Mit dem Attribut scope können Sie erforderliche Bereiche bearbeiten. Sie können den erforderlichen Bereich (scope) beispielsweise auf openid profile email setzen.
- Die RP registriert ihre Umleitungs-URL mit https://<Hostname>:<SSL-Port>/oidcclient/redirect/client01 beim OP. Der Hostname und der SSL-Port werden automatisch aufgelöst und client01 ist die ID des Konfigurationselements openidConnectClient. Wenn der RP ein Proxy vorgeschaltet ist, können Sie den Hostnamen und den Port mit dem Attribut redirectToRPHostAndPort überschreiben und redirectToRPHostAndPort auf https://<Hostname>:<SSL-Port> setzen.
- Konfigurieren Sie eine Benutzerregistry. Vom OP zurückgegebene Benutzeridentitäten werden standardmäßig keinem Benutzer in der Registry zugeordnet. In der Registry müssen daher keine Benutzer konfiguriert sein. Wenn jedoch das Attribut mapIdentityToRegistryUser des Elements openidConnectClient auf true gesetzt ist, muss es für die Identität, die vom OP zurückgegeben wird, einen Benutzereintrag geben, damit die Authentifizierung und Autorisierung funktionieren. Informationen zum Konfigurieren einer Benutzerregistry finden Sie unter Benutzerregistry in Liberty konfigurieren.
- Konfigurieren Sie den Truststore des Servers so, dass die Unterzeichnerzertifikate der unterstützten OpenID Connect-Provider aufgenommen werden. Informationen zu Keystores finden Sie unter SSL-Kommunikation in Liberty aktivieren.
- Modifizieren Sie die SSL-Konfiguration des Servers so, dass der konfigurierte Truststore verwendet wird.
<sslDefault sslRef="DefaultSSLSettings" /> <ssl id="DefaultSSLSettings" keyStoreRef="myKeyStore" trustStoreRef="myTrustStore" /> <keyStore id="myKeyStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> <keyStore id="myTrustStore" password="{xor}EzY9Oi0rJg==" type="jks" location="${server.config.dir}/resources/security/BasicTrustStore.jks" />
OpenID Connect ist für die Verwendung der vom Server angegebenen Standard-SSL-Konfiguration konfiguriert. Die Standard-SSL-Konfiguration für den Server muss daher den für OpenID Connect konfigurierten Truststore verwenden.
- Bei Bedarf können Sie einen OpenID Connect-Provider eines anderen Anbieters konfigurieren.
Wenn Sie den OpenID-Connect-Client von Liberty für die Verwendung eines OpenID Connect-Providers eines anderen Anbieters (z. B. Microsoft Azure oder Google) konfigurieren möchten, müssen Sie die folgenden Attribute konfigurieren. Die Attributwerte können Sie anfordern, indem Sie den Erkennungsendpunkt des OP aufrufen, der für den Aussteller unter einem Pfad, der durch Verkettung der Zeichenfolge /.well-known/openid-configuration gebildet wird, ein JSON-Dokument bereitstellt.
- Setzen Sie das Attribut jwkEndpointUrl auf die URL des JWK-Dokuments (JSON Web Key Set) des OP, die in der Erkennungsdatei als jwks_uri definiert ist. Wenn Sie beispielsweise den OP von Google verwenden möchten, können Sie jwkEndpointUrl = "https://www.googleapis.com/oauth2/v2/certs" festlegen.
- Setzen Sie das Attribut issuerIdentifier auf den in der Erkennungsdatei definierten issuer. Ein ID-Token, das diesen Wert nicht als iss-Anspruch enthält, wird zurückgewiesen. Sie können beispielsweise issuerIdentifier="accounts.google.com" festlegen, wenn Sie Google als OP verwenden.
- Legen Sie signatureAlgorithm="RS256" fest. Der Standardsignaturalgorithmus des OpenID-Connect-Clients von Liberty ist HS256.
- Setzen Sie das Attribut userIdentityToCreateSubject auf den Namen eines Anspruchs, der von dem ID-Token des Anbieters, das die eindeutige ID eines Benutzers repräsentiert, verwendet wird. Sie können beispielsweise userIdentityToCreateSubject ="email" festlegen, wenn Sie den OP von Google verwenden, und userIdentityToCreateSubject ="upn" oder userIdentityToCreateSubject ="unique_name", wenn Sie Microsoft Azure verwenden.
- Setzen Sie das Attribut groupIdentifier auf den Namen des Anspruchs, der die Gruppenmitgliedschaft oder Rollen des Benutzers repräsentiert. Sie können beispielsweise groupIdentifier="groups" festlegen, wenn Sie Microsoft Azure verwenden.
Weitere Konfigurationsoptionen für den OpenID-Connect-Client finden Sie unter OpenID Connect Client.
- Optional: Authentifizierungsfilter
Wenn das Feature openidConnectClient-1.0 aktiviert und das Element openidConnectClient nicht mit einem Attribut authFilterRef konfiguriert ist, werden alle nicht authentifizierten Anforderungen über den OpenID Connect-Provider authentifiziert.
Informationen zum Konfigurieren des Authentifizierungsfilters finden Sie unter Authentifizierungsfilter.
- Unterstützung für mehrere OpenID Connect-Provider.
Sie können Liberty als OpenID Connect-Relying-Party für mehrere OpenID Connect-Provider konfigurieren, indem Sie mehrere openidConnectClient-Elemente und mehrere Authentifizierungsfilter erstellen. Jedes openidConnectClient-Element definiert eine Single-Sign-On-Beziehung mit einem OpenID Connect-Provider und verwendet das Attribut authFilterRef, um auf einen Authentifizierungfilter zu verweisen.
- Konfigurieren Sie einen unterstützten ID-Token-Signaturalgorithmus.
Sie können einen Liberty-OpenID-Connect-Client konfigurieren, um den RS256-Signaturalgorithmus in einem ID-Token zu unterstützen. Der Standardsignaturalgorithmus des OpenID-Connect-Clients von Liberty ist HS256. Wenn Sie RS256 als Signaturalgorithmus des ID-Tokens konfigurieren, indem Sie die Einstellung signatureAlgorithm="RS256" festlegen, müssen Sie sowohl trustStoreRef als auch trustAliasName konfigurieren, es sei denn, OP unterstützt einen JWK-Endpunkt.
- Optional: Konfigurieren Sie einen Grant-Typ "implicit".
Das Feature openidConnectClient-1.0 verwendet einen Grant vom Typ "Authorization Code", um einen Benutzerauthentifizierungstoken anzufordern und Sie können das Liberty-Feature openidConnectClient-1.0 konfigurieren, um einen Grant vom Typ "implicit" zu verwenden, indem Sie grantType="implicit" der Datei server.xml hinzufügen. Wenn sich Ihr Liberty-Server und der OpenID Connect-Provider hinter unterschiedlichen Firewalls befinden, müssen Sie diese Konfigurationsoption verwenden.
- Optional: Die Liberty OpenID Connect-Relying-Party erstellt nach der Verarbeitung des ID-Tokens automatisch ein SSO-Token (Single Sign-on). Durch Hinzufügen der Konfigurationseigenschaft disableLtpaCookie="true" können Sie Liberty so konfigurieren, dass kein SSO-Token für den Server erstellt wird oder dass ein SSO-Token für die Ressource erstellt wird, die mit OpenID Connect geschützt wird. Wenn Sie disableLtpaCookie="true" festlegen, akzeptiert der Liberty OpenID Connect-Client nur Authentifizierungsanforderungen, die zuvor mit dem konfigurierten OpenID Connect-Provider authentifiziert wurden, und die Lebensdauer der Authentifizierungssitzung wird auf die Lebensdauer des ID-Tokens beschränkt.
- Optional: Sie können einen OpenID Connect-Client so konfigurieren, dass er optional ein gültiges OAuth 2.0-Bearer-Zugriffstoken als Authentifizierungstoken akzeptiert, ohne die Anforderung an einen OpenID Connect-Provider umzuleiten. Wenn eine Anforderung ein gültiges OAuth 2.0-Bearer-Zugriffstoken enthält, validiert der Liberty OpenID Connect-Client das Zugriffstoken automatisch und erstellt basierend auf dem Ergebnis der Tokenvalidierung ein authentifiziertes Subjekt. Wenn die Anforderung kein Zugriffstoken enthält oder wenn das Zugriffstoken ungültig ist, leitet der Liberty OpenID Connect-Client den Benutzer weiterhin an einen OpenID Connect-Provider weiter. Diese Funktion ermöglicht dem Liberty-Server, den Browser-Client und einen Client, der kein Browser ist, z. B. einen REST-konformen Client, zu bedienen. Zum Aktivieren dieser Funktion können Sie der Konfiguration inboundPropagation=”supported” hinzufügen.
Wenn Ihre Hosting-Umgebung den Zugriff auf das Kontextstammverzeichnis /oidcclient nicht zulässt, ändern Sie das Kontextstammverzeichnis, indem Sie das Element oidcClientWebapp konfigurieren.
Das Umleitungsservlet des OpenID-Connect-Client von Liberty ist am Kontextstammverzeichnis /oidcclient empfangsbereit. Das zugehörige Format des Umleitungs-URL ist: https://<Hostname>:<SSL-Port>/oidcclient/redirect/<Konfigurations-ID>. Wenn Sie dieses Kontextstammverzeichnis nicht verwenden können, legen Sie in der Serverkonfiguration ein anderes Kontextstammverzeichnis fest.
Wenn Ihre Hosting-Umgebung beispielsweise voraussetzt, dass Sie das Kontextstammverzeichnis /acme/openid verwenden, fügen Sie das folgende Element hinzu:<oidcClientWebapp contextPath="/acme/openid" />
Das Format des daraus resultierenden URL ist https://<Hostname>:<SSL-Port>/acme/openid/redirect/<Konfigurations-ID>.
Ergebnisse
Untergeordnete Themen
- Berechtigungsendpunkt für OpenID Connect aufrufen
In OpenID Connect führt der Berechtigungsendpunkt die Authentifizierung und die Berechtigung eines Benutzers durch. - Tokenendpunkt für OpenID Connect aufrufen
Im OpenID Connect-Berechtigungscodeablauf verwendet ein Client den Tokenendpunkt, um ein ID-Token, ein Zugriffstoken und ein Aktualisierungstoken abzurufen. - Introspektionsendpunkt für OpenID Connect aufrufen
Der Introspektionsendpunkt ermöglicht Inhabern von Zugriffstokens, eine Gruppe von Metadaten zu einem Zugriffstoken von dem OpenID Connect-Provider anzufordern, der das Zugriffstoken ausgegeben hat. Voraussetzung ist, dass das Zugriffstoken von OpenID Connect oder von der OAuth-Authentifizierung abgerufen wurde. - Coverage-Map-Service aufrufen
Der Coverage-Map-Service ist ein ungeschützter Endpunkt, der ein JSON-Array (JavaScript Object Notation) von URI-Präfixen zurückgibt, die mit Schrägstrichen enden. Das Array von URI-Präfixen gibt an, welche Webkontexte Teil einer SSO-Gruppe (Single Sign-on) sind, damit Clients entscheiden können, ob das Senden eines Zugriffstokens an ein bestimmtes URI-Ziel sicher ist. - UserInfo-Endpunkt für OpenID Connect aufrufen
Der UserInfo-Endpunkt gibt Ansprüche für einen Benutzer zurück, der mit der OpenID Connect-Authentifizierung authentifiziert wird. - Sitzungsmanagementendpunkt für OpenID Connect aufrufen
Mithilfe des Sitzungsmanagementendpunkts können OpenID-Connect-Relying-Partys den Anmeldestatus eines Benutzers eines bestimmten OpenID Connect-Providers (OP) bei gleichzeitig minimiertem Netzdatenverkehr überwachen. Mit dem Sitzungsmanagementendpunkt kann eine Relying Party (RP) einen Benutzer abmelden, der sich beim OpenID Connect-Provider abgemeldet hat.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_config_oidc_rp
Dateiname: twlp_config_oidc_rp.html