Auf dieser Seite wird beschrieben, wie Sie in Ihrer API mithilfe von Cloud Endpoints Frameworks die Unterstützung der Nutzerauthentifizierung von Clientanwendungen hinzufügen. Derzeit werden Android- und JavaScript-Clients unterstützt.
Endpoints Frameworks unterstützt die Nutzerauthentifizierung von Clientanwendungen, die eine der folgenden Methoden verwenden:
Unabhängig davon, welche Authentifizierungsmethode Sie verwenden, müssen Sie in jeder API-Methode, in der Sie die ordnungsgemäße Authentifizierung prüfen möchten, wie in den folgenden Abschnitten beschrieben, nach einem gültigen User
suchen:
Voraussetzungen
Folgende Voraussetzungen sollten erfüllt sein:
Ein Google Cloud-Projekt wurde erstellt.
- Wenn Sie in Ihrem Client JWT verwenden, um authentifizierte Anfragen an die API zu senden, muss das JWT im Autorisierungsheader der HTTP-Anfrage enthalten sein. Das JWT sollte folgende erforderlichen Anforderungen erfüllen:
-
iss
-
sub
-
aud
-
iat
-
exp
-
Mit Firebase Auth authentifizieren
So unterstützen Sie Aufrufe von Clients, die Firebase Auth verwenden:
Importieren Sie die App Engine Cloud Endpoints API in Ihre API-Klasse:
import endpoints
Fügen Sie dem API-Decorator ein Firebase-Ausstellerobjekt für jeden Client hinzu. Beispiel:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'firebase': endpoints.Issuer( 'https://securetoken.google.com/YOUR_PROJECT_ID, 'https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com')})
- Ersetzen Sie
YOUR_API_NAME
durch den Namen der API. - Ersetzen Sie
VERSION_NUMBER
durch Ihre API-Version, z. B.v1
. - Ersetzen Sie den Code YOUR_PROJECT_ID durch die Google Cloud-Projekt-ID des Clients.
- Ersetzen Sie
Prüfen Sie in jeder API-Methode, mit der Sie eine ordnungsgemäße Authentifizierung gewährleisten möchten, ob ein gültiger
User
vorhanden ist. Wenn dies nicht der Fall ist, geben Sie wie in der folgenden Methodendefinition beispielhaft gezeigt den Fehlererror 401
aus:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Stellen Sie die Endpoints API bereit. Die API muss bei jedem neu hinzugefügten Client neu bereitgestellt werden.
Firebase-Authentifizierung zu einem Client hinzufügen
Sie können Ihren Code um die Firebase-Authentifizierung erweitern, wie in der Firebase-Dokumentation beschrieben. Dem Client muss ein Google Cloud-Projekt zugewiesen sein und die Projekt-ID muss in der Konfiguration des Firebase-Ausstellers der API aufgeführt sein.
Mit Auth0 authentifizieren
So unterstützen Sie Aufrufe von Clients, die Auth0 verwenden:
Importieren Sie die App Engine Endpoints API in Ihre API-Klasse:
import endpoints
Fügen Sie dem API-Decorator ein Auth0-Ausstellerobjekt für jeden Client hinzu. Beispiel:
@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', issuers={'auth0': endpoints.Issuer( 'https://YOUR_ACCOUNT_NAME.auth0.com', 'https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json')})
- Ersetzen Sie
YOUR_API_NAME
durch den Namen der API. - Ersetzen Sie
VERSION_NUMBER
durch Ihre API-Version, z. B.v1
. - Ersetzen Sie
YOUR_ACCOUNT_NAME
durch den für den Client verwendeten Auth0-Kontonamen.
- Ersetzen Sie
Prüfen Sie in jeder API-Methode, mit der Sie eine ordnungsgemäße Authentifizierung gewährleisten möchten, ob ein gültiger
User
vorhanden ist. Wenn dies nicht der Fall ist, geben Sie wie in der folgenden Methodendefinition beispielhaft gezeigt den Fehlererror 401
aus:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Stellen Sie die API bereit. Die API muss bei jedem neu hinzugefügten Client neu bereitgestellt werden.
Auth0-Authentifizierung zu einem Client hinzufügen
Sie können Ihren Code um die Auth0-Authentifizierung erweitern, wie in der Auth0-Dokumentation beschrieben. Der Client muss in der Auth0-Ausstellerkonfiguration der API aufgeführt sein.
Mit Google-ID-Tokens authentifizieren
So unterstützen Sie Aufrufe von Clients, die für die Authentifizierung Google-ID-Tokens verwenden:
Fordern Sie für jede Clientanwendung eine OAuth 2-Client-ID an. Der Inhaber der Clientanwendung muss die Client-ID in der Google Cloud Console generieren. Eine Anleitung hierzu finden Sie unter Client-IDs erstellen.
Importieren Sie die App Engine Endpoints-API in Ihre API-Klasse:
import endpoints
Geben Sie in den
allowed_client_ids
alle Client-IDs an, denen Sie Zugriff auf Ihre API gewähren möchten. Geben Sie außerdem die Client-IDs von Android-Clients im Feldaudiences
des API-Decorators an. Beispiel:@endpoints.api( name='YOUR_API_NAME', version='VERSION_NUMBER', allowed_client_ids=ALLOWED_CLIENT_IDS, audiences=[ANDROID_AUDIENCE]) class AuthedGreetingApi(remote.Service): # ...
Ersetzen Sie
ALLOWED_CLIENT_IDS
durch die Liste der OAuth 2-Client-IDs, die von jedem Clientprojekt generiert wurden, und ersetzen SieANDROID_AUDIENCE
durch die Liste der Android-Webclient-IDs. Die Webclient-ID ist die Client-ID mit dem Zusatz.apps.googleusercontent.com
. Beispiel:YOUR_CLIENT_ID.apps.googleusercontent.com
.Prüfen Sie in jeder API-Methode, mit der Sie eine ordnungsgemäße Authentifizierung gewährleisten möchten, ob ein gültiger
User
vorhanden ist. Wenn dies nicht der Fall ist, geben Sie wie in der folgenden Methodendefinition beispielhaft gezeigt den Fehlererror 401
aus:user = endpoints.get_current_user() # If there's no user defined, the request was unauthenticated, so we # raise 401 Unauthorized.
Stellen Sie die Endpoints API bereit. Die API muss bei jedem neu hinzugefügten Client neu bereitgestellt werden.
Einem Client die Google-ID-Tokenauthentifizierung hinzufügen
Informationen zum Hinzufügen von Authentifizierungscode zu Clients finden Sie unter:
Weitere Informationen
Hintergrundinformationen zur Nutzerauthentifizierung und zum Unterschied zur API-Schlüsselautorisierung finden Sie unter API-Schlüssel effizient nutzen.