Nutzer mit Okta authentifizieren

Auf dieser Seite wird beschrieben, wie Sie die Nutzerauthentifizierung in API Gateway unterstützen.

Zum Authentifizieren eines Nutzers muss eine Client-Anwendung eine JSON Web Token (JWT) im Autorisierungsheader des HTTP-Anfrage an Ihre Back-End-API. API Gateway validiert das Token im Namen Ihrer API, sodass Sie in Ihrer API keinen Code zur Verarbeitung der Authentifizierung hinzufügen müssen. Sie müssen jedoch die API-Konfiguration für Ihr Gateway so konfigurieren, dass es die ausgewählten Authentifizierungsmethoden unterstützt.

API Gateway prüft ein JWT effizient mithilfe des JSON Web Key Sets (JWKS) des JWT-Ausstellers. Der Speicherort des JWKS wird im Feld x-google-jwks_uri der API-Konfiguration des Gateways angegeben. API Gateway speichert das JWKS für fünf Minuten und wird alle fünf Minuten aktualisiert.

Hinweis

  • Wenn Ihre Clientanwendung eine HTTP-Anfrage sendet, muss der Autorisierungs-Header in der Anfrage die folgenden JWT-Anforderungen enthalten:
    • iss (issuer)
    • sub (subject)
    • aud (audience)
    • iat (issued at)
    • exp (expiration time)

API Gateway für die Clientauthentifizierung konfigurieren

Die API-Konfiguration für API Gateway muss ein Objekt für Sicherheitsanforderungen und ein Objekt für Sicherheitsdefinitionen enthalten, damit die Anforderungen im signierten JWT validiert werden können.

Wie im Okta-Integrationsleitfaden für Google Cloud Endpoints erläutert, nehmen Sie die folgenden Änderungen an Ihrem OpenAPI-Dokument vor:

  1. Fügen Sie der Sicherheitsdefinition in Ihrer API-Konfiguration Folgendes hinzu, die dem Sicherheitsschema von OpenAPI 2.0 entspricht. Ersetzen Sie YOUR_OKTA_TENANT_NAME durch den Name Ihres Okta-Mandanten und YOUR_OKTA_CLIENT_ID mit die Client-ID, die Sie in Ihrem Okta-Mandanten erstellt haben.

          securityDefinitions:
            okta_jwt:
              authorizationUrl: ""
              flow: "implicit"
              type: "oauth2"
              x-google-issuer: "https://YOUR_OKTA_TENANT_NAME.com"
              x-google-jwks_uri: "https://YOUR_OKTA_TENANT_NAME.com/oauth2/v1/keys"
              x-google-audiences: "YOUR_OKTA_CLIENT_ID"
    
  2. Fügen Sie den Abschnitt "security" entweder für die gesamte API auf API-Ebene oder für eine bestimmte Methode auf Methodenebene hinzu.

      security:
        - okta_jwt: []
    

Sie können in der API-Konfiguration mehrere Sicherheitsdefinitionen definieren, aber jede muss einen anderen Aussteller haben. Wenn Sie den Abschnitt "security" sowohl auf der API-Ebene als auch auf der Methodenebene verwenden, werden die Einstellungen auf der API-Ebene durch die Einstellungen auf der Methodenebene überschrieben.

Das Feld x-google-audiences ist nicht erforderlich. API-Gateway akzeptiert alle JWTs mit dem Back-End-Dienstnamen in der Form https://SERVICE_NAME in der aud-Anforderung.

Um zusätzlichen Client-IDs den Zugriff auf den Back-End-Dienst zu ermöglichen, können Sie den zugelassene Client-IDs im Feld x-google-audiences mithilfe von kommagetrennte Werte. API Gateway akzeptiert dann die JWTs mit einem der Angegebene Client-IDs im aud-Anspruch.

Authentifizierten Aufruf an eine API Gateway API senden

Wenn Sie eine Anfrage mit einem Authentifizierungstoken senden, empfehlen wir, das Token in den Header Authorization:Bearer einzufügen. Beispiel:

curl --request POST \
  --header "Authorization: Bearer ${TOKEN}" \
  "${GATEWAY_URL}/echo"

Hier sind GATEWAY_URL und TOKEN Umgebungsvariablen, die die bereitgestellte Gateway-URL bzw. das Authentifizierungstoken enthalten. Weitere Informationen finden Sie unter Eine authentifizierte Anfrage an eine API Gateway API senden, um Beispielcode zu erhalten, der eine Anfrage mit dem Header Authorization:Bearer sendet.

Falls Sie den Header beim Senden der Anfrage nicht verwenden können, können Sie das Authentifizierungstoken in einen Abfrageparameter namens access_token einfügen.

curl "${GATEWAY_URL}/echo?access_token=${TOKEN}"

Authentifizierte Ergebnisse in Ihrer API empfangen

API Gateway leitet in der Regel alle empfangenen Header weiter. Der ESP überschreibt aber möglicherweise den ursprünglichen Authorization-Header, wenn die Backend-Adresse in der API-Konfiguration durch x-google-backend angegeben ist

API Gateway sendet das Authentifizierungsergebnis in X-Apigateway-Api-Userinfo an die Backend-API. Es wird empfohlen, diesen Header anstelle des ursprünglichen Authorization-Headers zu verwenden. Dieser Header ist base64url-codiert und enthält die JWT-Nutzlast.

Nächste Schritte