OpenID Connect-Client in Liberty 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 Liberty-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.
Fehler vermeiden: Wenn Sie einen Proxy für abgehende Anforderungen verwenden, beachten Sie, dass die OpenID Connect-RP keine Möglichkeit bereitstellt, Anforderungen automatisch über einen Proxy-Host weiterzuleiten.Wenn Sie einen Proxy für den Zugriff auf OpenID Connect Provider (OP) verwenden müssen, muss der Wert, den Sie für eine beliebige auf OP bezogene URL-Eigenschaft eingeben, den Proxy-Host und Port und nicht den Host und Port des externen OP enthalten.
In den meisten Fällen können Sie den OP-Host und Port durch den Proxy-Host und Port ersetzen. Die URL, die Sie eingeben, muss für die RP und den Client (Browser oder Anwendung) sichtbar sein. Weitere Informationen darüber, wie Sie die richtige zu verwendende URL ermitteln, erhalten Sie von Ihrem Proxy-Administrator.
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. Weitere 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. Weitere 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.
Zusätzlich zur Verwendung der SSL-Standardkonfiguration, wie im folgenden Beispiel gezeigt, kann eine SSL-Standardkonfiguration für abgehende Verbindungen über das Element sslDefault mit dem Attribut outboundSSLRef konfiguriert werden. Wenn das Standardattribut für abgehende Verbindungen angegeben wird, wird die mit dem Attribut outboundSSLRef angegebene SSL-Konfiguration für abgehende Verbindungen verwendet. Sie können den Standardwert überschreiben und den für eine abgehende Verbindung zu verwendenden Host und Port angeben, indem Sie in der SSL-Konfiguration SSL-Filter für abgehende Verbindungen verwenden. Weitere Informationen finden Sie unter Filter für abgehende Verbindungen für SSL-Konfigurationen and SSL-Einstellungen für abgehende Kommunikation.
- 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-Client 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 OpenID Connect-Client von Liberty 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 der 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. - 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. Widerrufsendpunkt für OpenID Connect aufrufen
Mit einem Widerrufsendpunkt können Inhaber von Zugriffstokens oder Aktualisierungstokens den OpenID Connect Provider benachrichtigen, dass ein ausgegebener Token nicht mehr benötigt wird und widerrufen werden muss. Der Widerrufsendpunkt kann ein Token widerrufen, das über eine OpenID Connect- oder OAuth-Authentifizierung abgerufen wurde.Abmeldeendpunkt für OpenID Connect aufrufen
Ein Client verwendet den Abmeldeendpunkt, um die providerseitige Sitzung und Cookies für einen Webbrowser zu löschen.- 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. - 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. - 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.

Dateiname: twlp_config_oidc_rp.html