Erste Schritte: OpenID Connect-Provider und -Client in Liberty konfigurieren

Dieses umfassende Beispiel hilft Ihnen, sich mit der Konfiguration von OpenID Connect (OIDC) in Liberty vertraut zu machen, da es Sie von der Installation von Liberty bis zur Konfiguration von OpenID Connect führt. Das Ergebnis dieser Vorgehensweise ist, dass Clientanwendungen die Identität eines Benutzers überprüfen können, indem sie sich auf die Authentifizierung durch einen OpenID Connect-Provider stützen können.

Informationen zu diesem Vorgang

Sie können einen OpenID Connect-Provider und eine OpenID Connect-Relying-Party einrichten, indem Sie die folgenden Schritte in der folgenden Prozedur ausführen:
  1. Installieren Sie Liberty.
  2. Erstellen Sie zwei Server.
  3. Laden Sie eine von IBM® bereitgestellte Testanwendung herunter, die ein Snoop-Servlet enthält.
  4. Konfigurieren Sie den OpenID Connect-Provider und die OpenID Connect-Relying-Party, um über den Hostnamen localhost zu kommunizieren.
  5. Melden Sie sich an.
  6. Bearbeiten Sie den OpenID Connect-Provider- und die OpenID Connect-Relying-Party-Konfigurationen, um Ihren eigenen Hostnamen zu verwenden.
  7. Melden Sie sich an.
Nachfolgend wird erläutert, was bei der Prozedur passiert:
  • Der OpenID Connect-Relying-Party-Server und der OpenID Connect-Provider-Server werden beiden auf demselben System ausgeführt.
  • Der OpenID Connect-Relying-Party-Server und der OpenID Connect-Provider-Server verwenden zum Starten beide den Hostnamen localhost. Auf diese Weise sollen Probleme vermieden werden, die Ihr System mit einem Host haben könnte, wenn ein Host verwendet wird, der Verbindungen von außen zu sich selbst zulässt.
  • Eine dateibasierte Registry ist in der Datei server.xml für den OpenID Connect-Provider-Server fest codiert. Sie enthält zwei Einträge für den Benutzernamen und das Kennwort. Ein Eintrag ist für den Benutzernamen Jackson mit dem Kennwort Password. Der andere Eintrag ist für den Benutzernamen Andrea mit dem Kennwort Password. In einer Produktionsumgebung verwenden Sie möglicherweise die LDAP-Benutzerregistry, da sich Benutzer beim OpenID Connect-Provider authentifizieren. Ein OpenID Connect-Provider muss eine Registry haben. Die OpenID Connect-Relying-Party benötigt keine Registry, da sie den Benutzerartefakten, z. B. Tokens, vertraut, die sie vom OpenID Connect-Provider erhält.
  • Die Standardkeystores verwenden Klartextkennwörter. Sie können ein codiertes und verschlüsseltes Kennwort generieren, indem Sie den Befehl securityUtility verwenden.
  • Der HS256-Signaturalgorithmus wird zur Vereinfachung verwendet. Die Unterstützung für den HS256-Signaturalgorithmus ist gemäß der OpenID Connect-Spezifikation nicht erforderlich. Viele OpenID-Provider unterstützen den HS256-Signaturalgorithmus nicht.
  • Sie können aus Gründen der Zweckdienlichkeit die Testanwendung in das Verzeichnis dropins stellen. Vermeiden Sie jedoch diese Vorgehensweise in einer Produktionsumgebung.
  • Der OIDC-Trace ist aktiviert, sodass Sie beim Auftreten von Fehlern die Serverdatei trace.log anzeigen können.

Vorgehensweise

  1. Installieren Sie WebSphere Liberty.
    1. Laden Sie die WebSphere Liberty-.zip-Datei von der Seite WASdev in ein neues Verzeichnis für Ihre Installation herunter.
    2. Extrahieren Sie die heruntergeladene Datei.
      unzip wlp-webProfile7-17.0.0.4.zip

      Alle Pfade, die in diesem Beispiel noch erwähnt werden, sind relativ zu dem Verzeichnis, das Sie für Ihre Installation erstellt haben.

  2. Laden Sie die Liberty-Beispielstandardanwendung herunter.

    Diese Standardanwendung ist in der libertyDefaultApplication.earDatei und enthält das Snoop-Servlet, das Sie in dieser Beispielprozedur verwenden.

  3. Installieren Sie die Liberty OpenID Connect-Client- und Liberty OpenID Connect-Provider-Features.
    Führen Sie im Verzeichnis wlp/bin die folgenden Befehle aus:
    installUtility install openidConnectClient-1.0
    installUtility install openidConnectServer-1.0
  4. Erstellen Sie die Liberty-Server.
    1. Erstellen Sie den OpenID Connect-Relying-Party-Server.
      Führen Sie im Verzeichnis wlp/bin den folgenden Befehl aus:
      server create Liberty_RP
    2. Erstellen Sie den OpenID Connect-Provider-Server.
      Führen Sie im Verzeichnis wlp/bin den folgenden Befehl aus:
      server create Liberty_OP
  5. Erstellen Sie die Datei server.xml für den OpenID Connect-Relying-Party-Server.
    1. Wechseln Sie in das Verzeichnis wlp/usr/servers/Liberty_RP.
    2. Ersetzen Sie den Inhalt der Datei server.xml durch den folgenden Inhalt:
      <server description="Liberty_RP">
          <featureManager>
              <feature>openidConnectClient-1.0</feature> 	
              <feature>appSecurity-2.0</feature>
          </featureManager> 
          <!-- Für den Zugriff auf diesen Server über einen anderen Host als den lokalen Host oder die Loopback-Adresse fügen Sie dem folgenden Element ein host-Attribut hinzu, z. B. host="*" -->
          <httpEndpoint httpPort="9081" httpsPort="9444" id="defaultHttpEndpoint"/>
          <keyStore id="defaultKeyStore" password="Password"></keyStore>
          <openidConnectClient id="RP"
              clientId="oidcclient"
              clientSecret="password"
              authorizationEndpointUrl="https://localhost:9443/oidc/endpoint/OP/authorize"
              tokenEndpointUrl="https://localhost:9443/oidc/endpoint/OP/token" >
          </openidConnectClient>
          <logging  traceSpecification="*=info:
      com.ibm.ws.security.*=all:com.ibm.ws.webcontainer.security.*=all:com.ibm.oauth.*=all:com.ibm.wsspi.security.oauth20.*=all:com.ibm.ws.transport.http.*=all:org.apache.http.cli.e.nt.*=all" traceFileName="trace.log" maxFileSize="20" maxFiles="10" traceFormat="BASIC" />
      </server>
  6. Erstellen Sie die Datei server.xml für den OpenID Connect-Provider.
    1. Wechseln Sie in das Verzeichnis wlp/usr/servers/Liberty_OP.
    2. Ersetzen Sie den Inhalt der Datei server.xml durch den folgenden Inhalt:
      <server description="Liberty_OP">
          <featureManager>
              <feature>openidConnectServer-1.0</feature>
              <feature>appSecurity-2.0</feature>
          </featureManager> 
          <!-- Für den Zugriff auf diesen Server über einen anderen Host als den lokalen Host oder die Loopback-Adresse fügen Sie dem folgenden Element ein host-Attribut hinzu, z. B. host="*" -->
          <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
          <keyStore id="defaultKeyStore" password="Password"/>
          <basicRegistry>
              <user name="Jackson" password="Password"/>
              <user name="Andrea" password="Password"/>
          </basicRegistry>
          <openidConnectProvider id="OP" oauthProviderRef="oauth"/>
          <oauthProvider id="oauth">
              <localStore>
                  <!-- Das URL-Standardmuster für die Umleitung ist: https://<Hostname>:<SSL-Port>/oidcclient/redirect/<ID_des_OpenID_Connect-Client> -->
                  <client name="oidcclient"  secret="password" scope="openid" redirect="https://localhost:9444/oidcclient/redirect/RP" />
              </localStore>
          </oauthProvider>
          <!-- Konfigurieren Sie für alle authentifizierten Benutzer "oauth-role authenticated", damit alle authentifizierten Benutzer auf die mit OIDC geschützte Ressource zugreifen können. -->
          <oauth-roles>
              <authenticated>
                  <special-subject type="ALL_AUTHENTICATED_USERS"/>
              </authenticated>
          </oauth-roles>
          <logging  traceSpecification="*=info:
      com.ibm.ws.security.*=all:com.ibm.ws.webcontainer.security.*=all:com.ibm.oauth.*=all:com.ibm.wsspi.security.oauth20.*=all:com.ibm.ws.transport.http.*=all:org.apache.http.client.*=all" traceFileName="trace.log" maxFileSize="20" maxFiles="10" traceFormat="BASIC" />
      </server>
  7. Erstellen Sie die Standardkeystores und Schlüssel.
    Führen Sie im Verzeichnis wlp/bin die folgenden Befehle aus:
    server start Liberty_RP
    server stop Liberty_RP
    server start Liberty_OP
    server stop Liberty_OP
  8. Fügen Sie das Unterzeichnerzertifikat für den Liberty_OP-Server als vertrauenswürdiges Zertifikat dem Liberty_RP-Server hinzu.
    1. Exportieren Sie das persönliche Zertifikat aus dem Keystore des Liberty_OP-Servers.
      1. Wechseln Sie in das Verzeichnis wlp/usr/servers/Liberty_OP/resources/security.
      2. Exportieren Sie das persönliche Standardzertifikat des Liberty_OP-Servers:
        keytool -exportcert -keystore key.jks -storepass Password -alias default -file libertyOP.cer
        Dieses persönliche Standardzertifikat für den Liberty_OP-Server ist ein Unterzeichnerzertifikat.
    2. Importieren Sie das Unterzeichnerzertifikat vom Liberty_OP-Server in den Keystore des Liberty_RP-Servers.
      1. Kopieren Sie die Datei libertyOP.cer in das Verzeichnis wlp/usr/servers/Liberty_RP/resources/security.
      2. Wechseln Sie in das Verzeichnis wlp/usr/servers/Liberty_RP/resources/security.
      3. Führen Sie zum Importieren den folgenden Befehl aus:
        keytool -importcert -keystore key.jks -storepass Password -alias libertyop -file libertyOP.cer -noprompt
    3. Optional: Zeigen Sie den Keystore des Liberty_RP-Servers an:
      keytool -list -v -keystore key.jks -storepass Password
  9. Installieren Sie die Liberty-Standardanwendung im Liberty_RP-Server.

    Kopieren Sie die Datei libertyDefaultApplication.ear, die Sie in einem vorherigen Schritt heruntergeladen haben, in das Verzeichnis wlp/usr/servers/Liberty_RP/dropins.

  10. Starten Sie den Liberty_OP-Server und den Liberty_RP-Server.
    Führen Sie im Verzeichnis wlp/bin die folgenden Befehle aus:
    server start Liberty_RP
    server start Liberty_OP
  11. Rufen Sie die Anmeldeseite des Liberty_RP-Servers auf.
    1. Geben Sie in der Adressleiste Ihres Browsers die URL des Liberty_RP-Servers ein:
      http://localhost:9081/snoop
    2. Drücken Sie die Eingabetaste.

      Es wird ein Anmeldefenster angezeigt.

      Wichtig: Wenn Ihr Browser eine Warnung anzeigt, aus der hervorgeht, dass die Verbindung nicht sicher ist, führen Sie alle in Ihrem Browser erforderlichen Schritte aus, um die Verbindung zuzulassen.
  12. Melden Sie sich am Liberty_OP-Server an und berechtigen Sie den Liberty_RP-Server.
    1. Authentifizieren Sie den Benutzer beim Liberty_OP-Server.
      1. Melden Sie sich mit dem Benutzernamen Jackson und dem Kennwort Password an.
      2. Klicken Sie auf Login.

        Der Eintrag Allow client to access the following date wird angezeigt, wenn der Eintrag openid aktiviert ist.

    2. Berechtigen Sie den Liberty_OP-Server für den Zugriff des Liberty_RP-Servers auf die persönlichen Daten des Benutzers.

      Klicken Sie auf Allow once oder Allow, remember my decision.

      Wichtig: Wenn Ihr Browser eine Warnung anzeigt, aus der hervorgeht, dass die Verbindung nicht sicher ist, führen Sie alle in Ihrem Browser erforderlichen Schritte aus, um die Verbindung zuzulassen. Sie empfangen möglicherweise diese Warnung, weil die Keystores, die vom Element httpEndpoint sowohl auf dem Liberty_RP-Server als auch auf dem Liberty_OP-Server verwendet werden, nur selbst signierte Zertifikate enthalten.
    Wenn Sie sich erfolgreich angemeldet haben, zeigt das Snoop-Servlet die Seite Snoop-Servlet - Anforderungs-/Clientinformationen an.
    Wichtig: Sie müssen mindestens eine der folgenden Punkte ausführen, um sich erneut anmelden zu können:
    • Melden Sie sich über ein anderes Browserprodukt an.
    • Löschen Sie im aktuellen Browser alle Cookies und führen Sie die vorherigen Schritte für die Anmeldung aus.
    • Schließen Sie alle Browserfenster, die Sie für die Anmeldung verwendet haben, öffnen Sie den Browser erneut und melden Sie sich an.
    • Starten Sie den Liberty_RP-Server erneut und führen Sie dann die vorherigen Schritte für die Anmeldung aus.
  13. Geben Sie Ihre Servernamen als vollständig qualifizierte Namen an.
    1. Ändern Sie den Hostnamen localhost in der Datei server.xml des Liberty_RP-Servers in den zugehörigen vollständig qualifizierten Namen.
      1. Bearbeiten Sie die Datei wlp/usr/servers/Liberty_RP/server.xml.
      2. Fügen Sie dem httpEndpoint-Element das folgende Attribut hinzu: host="*".
      3. Ändern Sie die Attribute authorizationEndpointUrl und tokenEndpointUrl des Elements openidConnectClient, um anstelle des Hostnamens localhost Ihren eigenen Server-Hostnamen zu verwenden.

        Der folgende Beispielcode gibt den vollständig qualifizierten Server-Hostnamen an:

        <openidConnectClient id="RP"
            clientId="oidcclient"
            clientSecret="password"
            authorizationEndpointUrl="https://wks1.acme.com:9443/oidc/endpoint/OP/authorize"
            tokenEndpointUrl="https://wks1.acme.com:9443/oidc/endpoint/OP/token" >
        </openidConnectClient>
      4. Die Datei wird gespeichert.

        Wenn Sie die Datei speichern, wird eine Liberty-Konfigurationsänderung ausgelöst, sodass Sie den Server nicht erneut starten müssen.

    2. Ändern Sie den Hostnamen localhost in der Datei server.xml des Liberty_OP-Server in den zugehörigen vollständig qualifizierten Namen.
      1. Bearbeiten Sie die Datei wlp/usr/servers/Liberty_OP/server.xml.
      2. Fügen Sie dem httpEndpoint-Element das folgende Attribut hinzu: host="*".
      3. Ändern Sie das Attribut redirect des Clientelements (oauthProvider/localStore/client), um anstelle des Hostnamens localhost Ihren eigenen, vollständig qualifizierten Server-Hostnamen zu verwenden.
        Der folgende Beispielcode gibt den vollständig qualifizierten Server-Hostnamen an:
        <client name="oidcclient" secret="password" scope="openid" redirect="https://wks1.acme.com:9444/oidcclient/redirect/RP" />
      4. Die Datei wird gespeichert.

        Wenn Sie die Datei speichern, wird eine Liberty-Konfigurationsänderung ausgelöst, sodass Sie den Server nicht erneut starten müssen.

  14. Rufen Sie die Anmeldeseite durch Eingabe des vollständig qualifizierten Hostnamens auf.
    1. Geben Sie in der Adressleiste eines Browsers die URL ein, die den Liberty_RP-Server enthält:
      http://<Hostname>:9081/snoop
    2. Drücken Sie die Eingabetaste.

      Es wird ein Anmeldefenster angezeigt.

      Wichtig: Wenn Ihr Browser eine Warnung anzeigt, aus der hervorgeht, dass die Verbindung nicht sicher ist, führen Sie alle in Ihrem Browser erforderlichen Schritte aus, um die Verbindung zuzulassen.
  15. Melden Sie sich am Liberty_OP-Server an und berechtigen Sie den Liberty_RP-Server.
    1. Authentifizieren Sie den Benutzer beim Liberty_OP-Server.
      1. Melden Sie sich mit dem Benutzernamen Jackson und dem Kennwort Password an.
      2. Klicken Sie auf Login.

        Der Eintrag Allow client to access the following date wird angezeigt, wenn der Eintrag openid aktiviert ist.

    2. Berechtigen Sie den Liberty_OP-Server für den Zugriff des Liberty_RP-Servers auf die persönlichen Daten des Benutzers.

      Klicken Sie auf Allow once oder Allow, remember my decision.

      Wichtig: Wenn Ihr Browser eine Warnung anzeigt, aus der hervorgeht, dass die Verbindung nicht sicher ist, führen Sie alle in Ihrem Browser erforderlichen Schritte aus, um die Verbindung zuzulassen. Sie empfangen möglicherweise diese Warnung, weil die Keystores, die vom Element httpEndpoint sowohl auf dem Liberty_RP-Server als auch auf dem Liberty_OP-Server verwendet werden, nur selbst signierte Zertifikate enthalten.
    Wenn Sie sich erfolgreich angemeldet haben, zeigt das Snoop-Servlet die Seite Snoop-Servlet - Anforderungs-/Clientinformationen an.

Ergebnisse

Sie haben einen Liberty-Server, der das Snoop-Servlet enthält, das von einer OpenID Connect-Relying-Party geschützt wird. Die OpenID Connect-Relying-Party verwendet Ihren OpenID Connect-Provider für die Authentifizierung.

Tabelle 1. Fragen zu den Ergebnissen
Frage Antwort
Warum wurde die Testanwendung durch die OpenID Connect-Relying-Party geschützt, obwohl das Snoop-Servlet und die LibertyDefaultApplication-Testanwendung nicht in der OpenID Connect-Konfiguration erwähnt sind? Die Testanwendung wurde geschützt, weil die zugehörige web.xml-Datei eine Integritätsbedingung für die Sicherheit enthält, die von allen Java™ EE-Containern, für die die Sicherheit aktiviert ist, unterstützt wird. Wenn die OpenID Connect-Relying-Party in Liberty ausgeführt wird, versucht die Relying Party standardmäßig, alle Anforderungen für alle URLs mit Integritätsbedingungen für die Sicherheit zu berechtigen. Da die Testanwendung Integritätsbedingungen für die Sicherheit für die verwendete URL hat, berechtigt die Relying Party die Anforderungen.

Symbol das den Typ des Artikels anzeigt. Taskartikel

Dateiname: twlp_config_oidc_pc_examp_beginner.html