J'essaie d'implémenter l'authentification de service à service à l'API Google Cloud Endpoints à l'aide du compte de service Google, mais je reçois l'erreur suivante.Comment faire pour vérifier l'authentification dans la bibliothèque Python à partir de Google Cloud Endpoints sur la norme GAE
Cannot decode and verify the auth token. The backend will not be able to retrieve user info (.../lib/endpoints_management/control/wsgi.py:596)
Traceback (most recent call last):
File ".../lib/endpoints_management/control/wsgi.py", line 593, in __call__
service_name)
File ".../lib/endpoints_management/auth/tokens.py", line 81, in authenticate
error)
UnauthenticatedException: (u'Cannot decode the auth token', UnicodeDecodeError('ascii', '\xc9\xad\xbd', 0, 1, 'ordinal not in range(128)'))
Valeur de la variable auth_token passé à self.get_jwt_claims (auth_token) est:
ya29.ElmlBB1mwIfrsnURUIQg0Nv6v5UPzFR02miD4w_VywMSlWGDstpmmc5vPsmUqt5rCcho797B1HeEOgT0UBQiVfv9dlsfxSMLRf67SGwX0ceK5uTujj4_tSUXog
Ressemble bibliothèque endpoints tente de décoder auth_token comme JWT, mais auth_token n'est pas JWT. Mais peut-être que j'ai tort. Le même problème se produit lorsque j'essaie de tester l'API à l'aide d'API Explorer. Cela arrive avec les derniers points de terminaison et aussi avec une version plus ancienne.
Voici ma classe API:
@endpoints.api(
name='myapi',
version='v1',
api_key_required=True,
auth_level=endpoints.AUTH_LEVEL.REQUIRED,
scopes=(
endpoints.EMAIL_SCOPE,
),
)
class MyApi(remote.Service):
...
Et voilà comment je j'accéder à l'API:
credentials = ServiceAccountCredentials.from_json_keyfile_dict(
json.loads(json_keyfile_data),
scopes='https://www.googleapis.com/auth/userinfo.email',
)
service = build(
name, version,
http=credentials.authorize(Http()),
discoveryServiceUrl=discovery_url)
...
Est-ce que je fais quelque chose ou est-il un bug dans la bibliothèque de points d'extrémité Python ?