Auf dieser Seite wird beschrieben, wie Sie in Ihrer API die Unterstützung der Nutzerauthentifizierung von Clientanwendungen konfigurieren, die Cloud Endpoints Frameworks verwenden. 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:
Sie haben ein Google Cloud-Projekt erstellt.
Mit Firebase Auth authentifizieren
So unterstützen Sie Aufrufe von Clients, die Firebase Auth verwenden:
Erstellen Sie ein Firebase-Projekt, wenn nicht bereits geschehen. Firebase-Projekte sind Google Cloud Console-Projekte, die Firebase-Dienste nutzen. Weitere Informationen finden Sie unter Was ist ein Firebase-Projekt? und in der Firebase-Dokumentation.
Fügen Sie Folgendes in Ihre
@Api
- oder Methoden-Annotation ein:- Fügen Sie der Annotation einen
authenticators
-Parameter an, der auf den Wert{EspAuthenticator.class}
festgelegt ist. - Fügen Sie einen
issuers
-Parameter hinzu, der einen@ApiIssuer
enthält, der auf Firebase gesetzt wurde. - Fügen Sie einen
issuerAudiences
-Parameter hinzu, der einen@ApiIssuerAudience
enthält, der auf Firebase und Ihre Projekt-ID gesetzt wurde.
Beispiel:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", authenticators = {EspAuthenticator.class}, issuers = { @ApiIssuer( name = "firebase", issuer = "https://securetoken.google.com/YOUR_PROJECT_ID", jwksUri = "https://www.googleapis.com/service_accounts/v1/metadata/x509/securetoken@system.gserviceaccount.com") }, issuerAudiences = { @ApiIssuerAudience(name = "firebase", audiences = "YOUR_PROJECT_ID") })
- Ersetzen Sie
YOUR_API_NAME
durch den Namen der API. - Ersetzen Sie
VERSION_NUMBER
durch Ihre API-Version, z. B.v1
. - Ersetzen Sie beide Instanzen von
YOUR_PROJECT_ID
durch Ihre Firebase-Projekt-ID.
- Fügen Sie der Annotation einen
Importieren Sie
Users
in den API-Implementierungscode:import com.google.api.server.spi.auth.common.User;
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, eine Ausnahme zurück:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Stellen Sie die API noch einmal bereit, wenn Sie neue Clients hinzufügen.
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 zugeordnet sein und die Projekt-ID muss, wie im vorherigen Abschnitt dargestellt, in der Firebase-Ausstellerkonfiguration der API aufgeführt sein.
Mit Auth0 authentifizieren
So unterstützen Sie Aufrufe von Clients, die Auth0 verwenden:
Fügen Sie Folgendes in Ihre
@Api
- oder Methoden-Annotation ein:- Fügen Sie der Annotation einen
authenticators
-Parameter an, der auf den Wert{EspAuthenticator.class}
festgelegt ist. - Fügen Sie einen
issuers
-Parameter hinzu, der einen@ApiIssuer
enthält, der auf Auth0 gesetzt wurde. - Fügen Sie einen
issuerAudiences
-Parameter hinzu und stellen Sie@ApiIssuerAudience
auf Auth0 und Ihre Auth0-Client-ID ein.
Beispiel:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", authenticators = {EspAuthenticator.class}, issuers = { @ApiIssuer( name = "auth0", issuer = "https://YOUR_ACCOUNT_NAME.auth0.com/", jwksUri = "https://YOUR_ACCOUNT_NAME.auth0.com/.well-known/jwks.json") }, issuerAudiences = { @ApiIssuerAudience(name = "auth0", audiences = "AUTH0_CLIENT_ID") })
- 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
AUTH0_CLIENT_ID
durch die ID, die Sie für Ihren Client verwenden möchten.
- Fügen Sie der Annotation einen
Importieren Sie
Users
in den API-Implementierungscode:import com.google.api.server.spi.auth.common.User;
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, eine Ausnahme zurück:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Stellen Sie die API noch einmal bereit, wenn Sie neue Clients hinzufügen.
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:
Fordern Sie für jede Clientanwendung eine OAuth 2-Client-ID an. Der Kunde Anwendungsinhaber muss die Client-ID über die Google Cloud Console generieren. Anweisungen finden Sie unter Client-IDs erstellen.
Fügen Sie Ihrer
@Api
-Annotation einenclientIds
-Eintrag mit der Client-ID für jede zugriffsberechtigte Clientanwendung und einenaudiences
-Eintrag für jeden Android-Client hinzu.Beispiel:
@Api( name = "YOUR_API_NAME", version = "VERSION_NUMBER", clientIds = {"YOUR_CLIENT_ID"}, audiences = {"YOUR_CLIENT_ID"} )
- Ersetzen Sie
YOUR_API_NAME
durch den Namen der API. - Ersetzen Sie
VERSION_NUMBER
durch Ihre API-Version, z. B.v1
. - Ersetzen Sie
YOUR_CLIENT_ID
durch die OAuth2-Client-ID, die im Clientanwendungsprojekt generiert wurde.
- Ersetzen Sie
Importieren Sie
Users
in den API-Implementierungscode:import com.google.api.server.spi.auth.common.User;
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, eine Ausnahme aus:@ApiMethod(httpMethod = ApiMethod.HttpMethod.GET) public Email getUserEmail(User user) throws UnauthorizedException { if (user == null) { throw new UnauthorizedException("Invalid credentials"); } Email response = new Email(); response.setEmail(user.getEmail()); return response; }
Stellen Sie die API noch einmal bereit, wenn Sie neue Clients hinzufügen.
Google-ID-Tokenauthentifizierung einem Client hinzufügen
Informationen zum Einfügen von Authentifizierungscode in Clients finden Sie unter:
JWT im Client senden
Wenn Sie in Ihrem Client ein JWT verwenden, um authentifizierte Anfragen an die API zu senden, muss das JWT im Autorisierungsheader einer HTTP-Anfrage enthalten sein. Das JWT sollte folgende erforderliche Anforderungen haben:
iss
sub
aud
iat
exp
Nächste Schritte
Hintergrundinformationen zur Nutzerauthentifizierung und zum Unterschied zur API-Schlüsselautorisierung finden Sie unter API-Schlüssel effizient nutzen.