Nutzer authentifizieren

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.

  • API-Verwaltung hinzugefügt,

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

  1. Importieren Sie die App Engine Cloud Endpoints API in Ihre API-Klasse:

    import endpoints
    
  2. 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/VERSION_NUMBER/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.
  3. 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 Fehler error 401 aus:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Stellen Sie die Endpoints API bereit. Die API muss bei jedem neu hinzugefügten Client neu bereitgestellt werden.

Firebase-Authentifizierung 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:

  1. Importieren Sie die App Engine Endpoints-API in Ihre API-Klasse:

    import endpoints
    
  2. 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.
  3. 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 Fehler error 401 aus:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  4. Stellen Sie die API bereit. Die API muss bei jedem neu hinzugefügten Client neu bereitgestellt werden.

Auth0-Authentifizierung 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:

  1. Fordern Sie für jede Clientanwendung eine OAuth 2-Client-ID an. Der Inhaber der Clientanwendung muss die Client-ID über die Google Cloud Console generieren. Eine Anleitung hierzu finden Sie unter Client-IDs erstellen.

  2. Importieren Sie die App Engine Endpoints-API in Ihre API-Klasse:

    import endpoints
    
  3. 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 Feld audiences 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 Sie ANDROID_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.

  4. 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 Fehler error 401 aus:

    user = endpoints.get_current_user()
    # If there's no user defined, the request was unauthenticated, so we
    # raise 401 Unauthorized.
    
  5. 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 Einfügen von Authentifizierungscode in Clients finden Sie unter:

Weitere Informationen

Hintergrundinformationen zur Nutzerauthentifizierung und zum Unterschied zur API-Schlüsselautorisierung finden Sie unter API-Schlüssel effizient nutzen.