Googleサービスアカウントを使用してGoogle Cloud Endpoints APIへのサービス間認証を実装しようとしていますが、次のエラーが発生します。 self.get_jwt_claims(auth_token)に渡されたauth_token変数のGAE標準のGoogle Cloud EndpointsからPythonライブラリの認証チェックを行う方法
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)'))
値は以下のとおりです。
ya29.ElmlBB1mwIfrsnURUIQg0Nv6v5UPzFR02miD4w_VywMSlWGDstpmmc5vPsmUqt5rCcho797B1HeEOgT0UBQiVfv9dlsfxSMLRf67SGwX0ceK5uTujj4_tSUXog
は、エンドポイント・ライブラリはJWTとしてauth_token解読しようとしているように見えますが、auth_token JWTされていません。しかし、多分私は間違っています。 API Explorerを使用してAPIをテストしようとしているときにも同じ問題が発生します。これは、最新のエンドポイントでも、古いバージョンでも発生します。ここで
私の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):
...
そして、これは私が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)
...
私はから何かをやってやPythonエンドポイントライブラリにバグがありアム?