Nutzer mit Auth0 authentifizieren

Auf dieser Seite wird gezeigt, wie Sie die Nutzerauthentifizierung in Cloud Endpoints 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. Der Extensible Service Proxy (ESP) validiert das Token für Ihre API, sodass Sie der API keinen Code zur Verarbeitung der Authentifizierung hinzufügen müssen. Sie müssen Ihr OpenAPI-Dokument jedoch so konfigurieren, dass es die ausgewählten Authentifizierungsmethoden unterstützt.

Der ESP prüft ein JSON-Webtoken (JWT) effizient mithilfe der öffentlichen Schlüssel des JWT-Ausstellers. Dabei speichert der ESP die öffentlichen Schlüssel 5 Minuten lang im Cache. Darüber hinaus speichert der ESP validierte JWTs 5 Minuten lang oder bis zum Ablauf des JWT, je nachdem, was zuerst eintritt.

Hinweis

  • Fügen Sie Ihrer Clientanwendung den Authentifizierungscode gemäß der Auth0-Dokumentation hinzu.

  • 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)

ESP für die Clientauthentifizierung konfigurieren

Das OpenAPI-Dokument muss ein Objekt für Sicherheitsanforderungen und ein Objekt für Sicherheitsdefinitionen enthalten, damit der ESP die Anforderungen im signierten JWT validieren kann.

So aktivieren Sie die Auth0-Authentifizierung:

  1. Fügen Sie der Sicherheitsdefinition in Ihrem OpenAPI-Dokument Folgendes hinzu:

      securityDefinitions:
        auth0_jwk:
          authorizationUrl: ""
          flow: "implicit"
          type: "oauth2"
          # Replace YOUR-ACCOUNT-NAME with your Auth0 account name.
          x-google-issuer: "https://YOUR-ACCOUNT-NAME.auth0.com/"
          x-google-jwks_uri: "https://YOUR-ACCOUNT-NAME.auth0.com/.well-known/jwks.json"
          # Optional. Replace YOUR-CLIENT-ID with your client ID
          x-google-audiences: "YOUR-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:
        - auth0_jwk: []
    

Sie können mehrere Sicherheitsdefinitionen im OpenAPI-Dokument angeben, allerdings muss jede Definition 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. ESP akzeptiert alle JWTs mit dem Back-End-Dienstnamen im Format https://SERVICE_NAME im Anspruch aud. Bis zusätzlichen Client-IDs den Zugriff auf den Back-End-Dienst ermöglichen, können Sie die zugelassene Client-IDs im Feld x-google-audiences mithilfe von kommagetrennte Werte. Der ESP akzeptiert dann die JWTs mit einer der angegebenen Client-IDs im Anspruch aud.

Sie können auch JWT-Standorte anpassen, indem Sie x-google-extensions hinzufügen. Weitere Informationen finden Sie unter openAPI-Erweiterungen.

Authentifizierter Aufruf an eine Endpoints API

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

curl -H "Authorization: Bearer ${TOKEN}" "${ENDPOINTS_HOST}/echo"

Hier sind ENDPOINTS_HOST und TOKEN Umgebungsvariablen, die den Hostnamen Ihrer API beziehungsweise das Authentifizierungstoken enthalten. Unter Authentifizierte Anfrage an eine Endpoints API senden finden Sie einen Beispielcode, 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 "${ENDPOINTS_HOST}/echo?access_token=${TOKEN}"

Authentifizierte Ergebnisse in Ihrer API empfangen

Der ESP leitet in der Regel alle empfangenen Header weiter. Sie überschreibt jedoch Ursprünglicher Authorization-Header, wenn die Backend-Adresse durch angegeben wird durch x-google-backend in der OpenAPI-Spezifikation oder BackendRule in der gRPC-Dienstkonfiguration.

Der ESP sendet das Authentifizierungsergebnis im X-Endpoint-API-UserInfo an die Back-End-API. Wir empfehlen, diesen Header anstelle des ursprünglichen Headers zu verwenden Authorization-Header. Dieser Header ist ein String, der von base64url codiert wird ein JSON-Objekt. Das JSON-Objektformat unterscheidet sich zwischen ESPv2 und ESP. Bei ESPv2 ist das JSON-Objekt genau die ursprüngliche JWT-Nutzlast. Für ESP Das JSON-Objekt verwendet andere Feldnamen und platziert die ursprüngliche JWT-Nutzlast im Feld claims. Siehe JWTs im Back-End-Dienst verarbeiten. finden Sie weitere Informationen zum Format.

Beispiele

Nächste Schritte