OpenID Connect-Provider in Liberty konfigurieren

Sie können einen Liberty-Server so konfigurieren, dass er als OpenID Connect-Provider oder Berechtigungsserver fungiert, um vom Web-SSO zu profitieren.

Informationen zu diesem Vorgang

Wenn Sie einen Liberty-Server so konfigurieren möchten, dass er als OpenID Connect-Provider fungiert, müssen Sie neben anderen Konfigurationsdaten das Feature openidConnectServer-1.0 in Liberty aktivieren.

Vorgehensweise

  1. Fügen Sie das Liberty-Feature openidConnectServer-1.0 und alle weiteren benötigten Features zur Datei server.xml hinzu. Das Feature ssl-1.0 ist auch für das Feature openidConnectServer-1.0 erforderlich.
    <feature>openidConnectServer-1.0</feature>
    <feature>ssl-1.0</feature>
  2. Definieren Sie einen OAuth-Service-Provider. OpenID Connect basiert auf dem Protokoll OAuth 2.0, sodass Sie einen gültigen OAuth-Service-Provider konfigurieren müssen. Zur Konfiguration eines OAuth-Service-Providers gehören die entsprechenden Elemente oauth-roles und oauthProvider sowie Benutzerregistry-Elemente. Einem Benutzer, der berechtigt ist, OpenID Connect zu verwenden, muss die Rolle authenticated oauth-role zugeordnet sein. Weitere Informationen finden Sie unter OAuth-Service-Provider definieren.

    Die OAuth-Metadaten werden für OpenID Connect aktualisiert und es finden hauptsächlich Hinzufügungen in den Clientmetadaten statt. Wenn Sie für die Clientregistrierung den Modus databaseStore verwenden, lesen Sie die Informationen unter Akzeptieren von Clientregistrierungsanforderungen durch einen OpenID Connect-Provider konfigurieren. Bei der Verwaltung von Clients sollten Sie sich an die Anweisungen in dem Dokument halten. Wenn Sie für die Clientregistrierung den Modus localStore verwenden, können Sie scope, preAuthorizedScope, grantTypes, responseTypes, introspectTokens und functionalUserId sowie weitere Attribute registrieren.

  3. Fügen Sie ein Element openidConnectProvider hinzu, dessen Attribut oauthProviderRef auf den konfigurierten oauthProvider verweist. Auf jeden oauthProvider kann nur ein openidConnectProvider verweisen. Zwei oder mehr Elemente openidConnectProvider können nicht von demselben oauthProvider referenziert werden. Die Attribute name und secret des Clientelements müssen mit der Client-ID (client ID) und dem geheimen Clientschlüssel (client secret) des entsprechenden OpenID Connect-Clients übereinstimmen. In diesem Beispiel wird der OpenID Connect-Standardclient des Liberty-Servers verwendet.
    Anmerkung: Der OP in diesem Beispiel erwartet, dass der SSL-Port des Clients auf 443 gesetzt ist.
    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" /> 
    
    <oauthProvider id="OAuthConfigSample"> 
    <localStore>
    <client name="client01" secret="{xor}LDo8LTor"
    displayname="client01" 
    scope="openid profile email" 
    redirect="https://server.example.com:443/oidcclient/redirect/client01"/> 
    </localStore>
    </oauthProvider>
    Anmerkung: Ein gültiger Client muss seinen Namen, seine Weiterleitung, seinen Bereich und seinen geheimen Schlüssel für den Grant-Typ authorization_code registrieren.
  4. Konfigurieren Sie den Truststore des Servers so, dass die Unterzeichnerzertifikate der unterstützten OpenID Connect-Relying-Partys oder -Clients aufgenommen werden. Informationen zu Keystores finden Sie unter SSL-Kommunikation in Liberty aktivieren
  5. 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}Lz4sLCgwLTs=" type="jks" location="${server.config.dir}/resources/security/BasicKeyStore.jks" /> 
    <keyStore id="myTrustStore" password="{xor}Lz4sLCgwLTs=" 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.

    Die Benutzereinwilligungserklärung von OpenID Connect ist als Plug-in verfügbar, sodass Provider eine eigene Einwilligungserklärung erstellen und pflegen können. Da dieses Formular über SSL abgerufen wird, müssen Sie den Truststore so konfigurieren, dass das Unterzeichnerzertifikat des Servers, der die Einwilligungserklärung bereitstellt, aufgenommen wird. Wenn das Standardformular für die Einwilligungserklärung verwendet wird und der für OpenID Connect verwendete Truststore nicht der vom Liberty-Server verwendete Keystore ist, müssen Sie das Unterzeichnerzertifikat des Liberty-Servers in den OpenID Connect-Truststore importieren.

    [17.0.0.3 und höher]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.

    Anmerkung: Für die Verwendung von OpenID Connect muss das Attribut scope in der Bereichsliste den Eintrag openid enthalten.

    Weitere Konfigurationsoptionen für den OpenID Connect-Provider finden Sie unter OpenID Connect Provider.

    Weitere OAuth-Konfigurationsoptionen finden Sie unter Oauth.

  6. [16.0.0.3 und höher]Optional: Konfigurieren Sie den OpenID Connect-Provider von Liberty so, dass er JSON Web Token (JWT)-Token als access_token-Token ausgibt.

    Standardmäßig gibt Liberty opake access_token-Token aus. Opake Token erfordern, dass der Tokenempfänger einen Rückruf an den Server sendet, der das Token ausgegeben hat. Sie können den OpenID Connect-Provider von Liberty so konfigurieren, dass er stattdessen JWT-Token als access_token-Token ausgibt, die den Tokenprüfmechanismus im Token enthalten. Hierzu setzen Sie im oauthProvider-Konfigurationselement den Wert jwtAccessToken="true" oder Sie implementieren die com.ibm.wsspi.security.oauth20.JwtAccessTokenMediator-SPI (Service Programming Interface, Serviceprogrammierschnittstelle).

    Weitere Informationen zur Schnittstelle finden Sie unter WebSphere OAuth 2.0 web single sign-on SPI ooder in der Java-Dokumentation, die mit dem Produkt im Verzeichnis ${wlp.install.dir}/dev/spi/ibm/ bereitgestellt wird.

  7. [16.0.0.4 und höher]Optional: Passen Sie den Inhalt des Tokens id_token, das der Liberty-OpenID-Connect-Provider sendet, an.
    Standardmäßig gibt der Liberty-OpenID-Connect-Provider id_token-Token aus, die den Benutzernamen und Informationen zur Gruppenzugehörigkeit enthalten. Sie können Tokeninhalte auf folgende Art und Weise anpassen:
    • Passen Sie die id_token-Inhalte vollständig an, indem Sie die SPI com.ibm.wsspi.security.openidconnect.IDTokenMediator implementieren. Die SPI bietet die größte Flexibilität, sodass Sie Ihre eigenen angepassten Token erstellen können.

      Weitere Informationen zur Schnittstelle finden Sie unter WebSphere OAuth 2.0 web single sign-on SPI ooder in der Java-Dokumentation, die mit dem Produkt im Verzeichnis ${wlp.install.dir}/dev/spi/ibm/ bereitgestellt wird.

    • Rufen Sie zusätzliche Benutzerattribute aus der eingebundenen Benutzerregistry ab, indem Sie zusätzliche Ansprüche im Attribut customClaims des Elements openidConnectProvider in der Serverkonfiguration auflisten. Wenn der Claimname sich vom Attributnamen in der eingebundenen Benutzerregistry unterscheidet, ordnen Sie den Claimnamen dem Attribut im Element claimToUserRegistryMap zu.
      Die folgende Konfiguration fügt beispielsweise verschiedene Ansprüche hinzu und ordnet den Anspruch alias dem Registry-Attribut seeAlso und den Anspruch lastName dem Attribut sn zu:
      <openidConnectProvider id="MyOP" oauthProviderRef="MyOauth" customClaims= "alias, email, lastName, employeeType, office">
          <claimToUserRegistryMap alias="seeAlso" lastName="sn"/> 
          ...
      </openidConnectProvider>

      Weitere Informationen finden Sie im Artikel Vom UserInfo-Endpunkt zurückgegebene Ansprüche konfigurieren.

  8. [17.0.0.2 und höher]Optional: Konfigurieren Sie Ihren Liberty OpenID Connect Provider so, dass die Benutzerauthentifizierung an Social Login delegiert wird, sodass sich Benutzer mit ihren Social Media-Konten anmelden können.

    Wenn Social Login für Ihren Liberty OpenID Connect Provider konfiguriert ist, können sich Benutzer mit ihren Social Media-Konten anmelden und müssen kein Konto für den Liberty-Provider erstellen. Weitere Informationen finden Sie unter Social Login in Liberty konfigurieren.

  9. Optional: [17.0.0.4 und höher]Konfigurieren Sie Ihren Liberty-OpenID-Connect-Provider so, dass er reguläre Ausdrücke in Clientumleitungs-URLs (Uniform Resource Locators) verwendet.
    1. Wenn Sie die Verwendung regulärer Ausdrücke aktivieren möchten, setzen Sie das Clientattribut allowRegexpRedirects auf true.
    2. Fügen Sie der Zeichenfolge regexp: ein Präfix hinzu, um URLs als reguläre Ausdrücke auszuwerten. URLs ohne reguläre Ausdrücke werden zuerst überprüft.
    3. Ersetzen Sie Backslashes (\) in Ihrem regulären Ausdruck durch Ausrufezeichen (!), wenn Sie Clients über den Registrierungsendpunkt registrieren.
    Anmerkung: Wenn Sie die Umleitung an unbeabsichtigte URLs zulassen, kann dies ein Sicherheitsrisiko darstellen. Wenn Sie reguläre Ausdrücke verwenden, stellen Sie sicher, dass sie nicht mit URLs übereinstimmen, die Sie nicht zulassen möchten.

    Im folgenden Beispiel ist die Umleitung an die URL https://apphost043.example.com zulässig, weil die URL mit dem regulären Ausdruck übereinstimmt:

    <openidConnectProvider id="OidcConfigSample" oauthProviderRef="OAuthConfigSample" />
    
    <oauthProvider id="OAuthConfigSample">
       <localStore>
          <client name="client01" secret="{xor}LDo8LTor" displayname="client01" scope="openid profile email" allowRegexpRedirects="true">
               <redirect>"https://apphost.example.com:443/oidcclient/redirect/client01"</redirect>
               <redirect>"regexp:https://apphost\d\d\d\.example\.com:443/oidcclient/redirect/client01"</redirect>
          </client>   </localStore>
    </oauthProvider>

Ergebnisse

Sie haben die Mindestkonfiguration fertiggestellt, die für die Konfigurations eines Liberty-Servers als OpenID Connect-Provider erforderlich ist, der mit anderen, als OpenID Connect-Clients konfigurierten Liberty-Servern kommunizieren kann.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_config_oidc_op.html