Ich habe eine API in Python mit Google Cloud Endpoint Framework erstellt und mein Android Client ist die einzige Anwendung, die die Erlaubnis hat, mit der API zu kommunizieren.Cloud Endpoint Authentication Zielgruppen
folgte ich die Tutorials und Anleitungen auf Google für die Authentifizierung und die API zum Schutz ein Zugriff auf bestimmte Client-IDs geben kann:
WEB_CLIENT_ID = 'myApiClientId.apps.googleusercontent.com'
ANDROID_CLIENT_ID = 'myAndroidClientId.apps.googleusercontent.com'
ANDROID_AUDIENCE = [ANDROID_CLIENT_ID]
ALLOWED_CLIENT_IDS = [WEB_CLIENT_ID, ANDROID_CLIENT_ID, endpoints.API_EXPLORER_CLIENT_ID]
api_collection = endpoints.api(name='myApi',
version='v1',
allowed_client_ids=ALLOWED_CLIENT_IDS,
audiences=ANDROID_AUDIENCE,
auth_level=endpoints.AUTH_LEVEL.REQUIRED
)
Auf dieser site sie sagen, dass „das Publikum“, um die Client-ID von enthalten sollte Die Backend-API
Für Android-Clients ist dieser Mechanismus das Zielgruppenargument, in dem Sie die Client-ID der Back-End-API angeben.
Aber auf this Website, sagen sie, dass die "Zuschauer" Feld, um die Android-Client-ID enthalten:
ALLOWED_CLIENT_IDS mit der Liste der OAuth 2-Client-IDs erzeugt von jedem Client von Google Cloud Platform-Konsole ersetzen project und ersetzen Sie ANDROID_AUDIENCE mit der Liste der Android-Webclient-IDs. Die Webclient-ID ist die Client-ID, an die .apps.googleusercontent.co angehängt ist. Beispiel: YOUR-CLIENT-ID.apps.googleusercontent.com.
Wie schützt man die API vor unberechtigtem Zugriff? Ich brauche nicht das "Benutzer" -Konto auf der Backend-Seite, ich möchte nur, dass der Android-Client der einzige Client ist, der auf die API zugreifen kann. Mein REST-Client kann auch auf die API zugreifen, obwohl die Client-IDs angegeben sind und AUTH_LEVEL auf erforderlich gesetzt ist.