Nutzer mit Auth0 authentifizieren
Auf dieser Seite wird beschrieben, wie Sie die Nutzerauthentifizierung in API Gateway unterstützen.
Zur Authentifizierung eines Nutzers muss eine Clientanwendung ein JSON-Webtoken (JWT) im Autorisierungs-Header der HTTP-Anfrage an Ihre Back-End-API senden. 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 der JWKS wird im Feld x-google-jwks_uri
der API-Konfiguration des Gateways angegeben. API Gateway speichert die JWKS-Datei fünf Minuten lang im Cache und aktualisiert sie alle fünf Minuten.
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)
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.
So aktivieren Sie die Auth0-Authentifizierung:
Fügen Sie der Sicherheitsdefinition in Ihrer API-Konfiguration Folgendes hinzu, das dem OpenAPI 2.0-Sicherheitsschema entspricht:
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"
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 in der API-Konfiguration mehrere Sicherheitsdefinitionen festlegen, 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. API Gateway akzeptiert alle JWTs mit dem Back-End-Dienstnamen im Format https://SERVICE_NAME
im Anspruch aud
.
Damit zusätzliche Client-IDs auf den Back-End-Dienst zugreifen können, können Sie die zulässigen Client-IDs im Feld x-google-audiences
durch kommagetrennte Werte angeben. API Gateway akzeptiert dann die JWTs mit einer der angegebenen Client-IDs im Anspruch aud
.
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. Unter Authentifizierte Anfrage an eine API Gateway 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 "${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.