Java-Anwendungen mit Oracle Identity Cloud Service entwickeln

Machen Sie sich mit dem Authentifizierungsablauf vertraut und erfahren Sie, wie die Beispielanwendung "Customer Quotes" die Integration mit Oracle Identity Cloud Service mit Java-Servlets implementiert.

Authentifizierungs-Flow verstehen

Im folgenden Prozessablauf werden die Schritte im Authentifizierungsablauf und die Kommunikation zwischen einer Beispielanwendung "Customer Quotes" und Oracle Identity Cloud Service beschrieben.

  1. Der Benutzer greift auf die Anwendung "Kundenangebote" (https://localhost:8181/cquotes) zu und klickt dann auf Mit Identity Cloud Service anmelden.

  2. Die Anwendung "Kundenangebote" bereitet eine Autorisierungscodeanforderung im folgenden Format vor:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/authorize?client_id=clientid&response_type=code&redirect_uri=https://localhost:8181/cquotes/return&scope=openid

    • Parameter:
      • client_id: Der Kunde gibt eine eindeutige Anwendungs-ID an, die in Oracle Identity Cloud Service registriert ist.

      • response_type: Die erwartete Antwort von Oracle Identity Cloud Service. In diesem Schritt ist es der Autorisierungscode.

      • redirect_uri: Die URL, an die der Autorisierungscode gesendet wird, nachdem der Benutzer die Authentifizierung und Autorisierung mit Oracle Identity Cloud Service abgeschlossen hat.

      • scope: Steuert, auf welche Daten die Anwendung "Kundenangebote" im Namen des Benutzers zugreifen und diese verarbeiten kann. Da OpenID Connect verwendet wird, lautet der Geltungsbereich openid.

  3. Die Anwendung "Customer Quotes" leitet den Benutzer zur in Schritt 2 generierten Oracle Identity Cloud Service-Autorisierungscode-URL um.

  4. Oracle Identity Cloud Service empfängt die Autorisierungscodeanforderung von der Customer Quotes-Anwendung (identifiziert durch client_id).

  5. Oracle Identity Cloud Service prüft, ob der Benutzer bereits authentifiziert ist. In diesem Fall überspringt Oracle Identity Cloud Service den Anmeldeprozess. Andernfalls startet Oracle Identity Cloud Service den Anmeldeprozess und zeigt die Seite Anmelden an.

  6. Der Benutzer leitet die Anmeldedaten zur Validierung an Oracle Identity Cloud Service weiter. Der Oracle Identity Cloud Service-Anmeldeprozess wendet die Kennwort-Policy an, bis die Anmeldedaten erfolgreich validiert wurden.

  7. Wenn der Anmeldeprozess erfolgreich war, leitet Oracle Identity Cloud Service den Benutzer mit der folgenden Umleitungs-URL zurück zur Anwendung "Customer Quotes":
    • URL:

      • https://localhost:8181/cquotes/return?code=code

    • Parameter:

      • code: Der Autorisierungscode, der von Oracle Identity Cloud Service erstellt wird.

  8. Die Anwendung "Kundenangebote" extrahiert den Autorisierungscode aus der Anforderung.

  9. Die Anwendung "Customer Quotes" kommuniziert direkt mit Oracle Identity Cloud Service, um den Autorisierungscode für ein Benutzerzugriffstoken mit der folgenden URL und den folgenden Headern auszutauschen:
    • URL: https://example.identity.oraclecloud.com/oauth2/v1/token?grant_type=authorization_code&code=code

    • Anforderungsheader:
      • Authorization=Basic (client_id:client_secret, 64-Bit-codiert)

      • Accept=*/*

    • Parameter:
      • grant_type: Da Sie ein authorization_code verwenden, um ein Zugriffstoken von Oracle Identity Cloud Service anzufordern, muss der Berechtigungstyp authorization_code lauten.

      • code: Der Autorisierungscode, der von Oracle Identity Cloud Service empfangen wurde, nachdem sich der Benutzer erfolgreich angemeldet hat.

    • Headerliste:
      • Autorisierung: Die vertrauenswürdige Anwendung client_id und client_secret (64-Bit-codiert) im Format: client_id:client_secret.

      • Akzeptieren: Der Antworttyp, den die Anwendung "Kundenangebote" erwartet

        .
  10. Oracle Identity Cloud Service validiert die Anforderung und gibt das folgende JSON-Web-Token (JWT) an die Customer Quotes-Anwendung zurück:
    • JWT-Inhalt:
      • access_token: Enthält Informationen zum Benutzer. Die Anwendung "Customer Quotes" kann dieses Token verwenden, wenn sie Oracle Identity Cloud Service-API-Aufrufe im Namen des Benutzers ausführt. Der access_token-Inhalt hängt vom Geltungsbereich ab, der während des Authentifizierungsprozesses angefordert wird.

      • id_token: Das primäre Token in OpenID Connect. Es wird zur Autorisierung des Endpunkts mit scope=openid verwendet. Die id_token enthält die Identifikationsinformationen (z.B. Name und E-Mail) zum Benutzer. Diese Informationen können von der Clientanwendung für verschiedene Zwecke verwendet werden, einschließlich Verifizierung und Anzeige von Inhalten. Eine legitime (vom Client basierend auf einer OpenID Connect-Providersignatur verifiziert) und aktive id_token weisen die Anwendung an, dass der Benutzer sich authentifiziert hat und über ein gültiges Token verfügt.

  11. Die Anwendung "Customer Quotes" verarbeitet das JWT-Token (id_token) und extrahiert dann die Benutzerinformationen, die von Oracle Identity Cloud Service zurückgegeben werden, wie Name und E-Mail.

  12. Die Anwendung "Kundenangebote" zeigt die Homepage mit Informationen zum Benutzer an, z.B. Name und E-Mail.

Java-Anwendungscode verstehen

Die Beispielanwendung "Customer Quotes" verwendet Servlet-Technologie.

Die Anwendung besteht aus den folgenden Hauptservlets:
  • com.example.servlet.AccessResourceServlet: Initiiert den Authentifizierungsablauf, indem der Benutzer zu Oracle Identity Cloud Service umgeleitet wird, um einen Autorisierungscode anzufordern.

  • com.example.servlet.ReturnServlet: Verarbeitet die Umleitungs-URL von Oracle Identity Cloud Service, empfängt den Autorisierungscode und verwendet die Klasse com.example.utils.OICOAuthClient, um den Autorisierungscode für ein Identitätstoken und ein Zugriffstoken auszutauschen.

  • com.example.servlet.LogoutServlet: Beendet die Benutzersession der Anwendung, meldet den Benutzer jedoch nicht bei Oracle Identity Cloud Service ab.

Die Servlets verwenden die folgenden Utilityklassen:
  • com.example.utils.OICOAuthClient: Erstellt die URL-Endpunkte für die Oracle Identity Cloud Service-REST-API, verarbeitet Anforderungen, parst Oracle Identity Cloud Service-Antworten und fügt der HTTP-Session der Anwendung Benutzerinformationen hinzu.

  • com.example.utils.HttpUtil: Verarbeitet die HTTP-Kommunikation mit Oracle Identity Cloud Service-REST-API-Endpunkten. Die gesamte Kommunikation direkt von der Customer Quotes-Anwendung zu Oracle Identity Cloud Service erfolgt über die Klasse java.net.HttpURLConnection.