[英]Cloud Endpoint Authentication audiences
我使用Google Cloud Endpoint Framework在Python中创建了一个API,而我的Android客户端是唯一有权与该API进行通信的应用程序。
我遵循了Google身份验证上的教程和指南,并且为了保护API,可以授予对特定客户端ID的访问权限:
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
)
他们在此网站上说“受众”应包含后端api的客户端ID
对于Android客户端,此机制是“听众”参数,您可以在其中指定后端API的客户端ID。
但是在此站点上,他们告诉“受众群体”字段应包含Android客户端ID:
将ALLOWED_CLIENT_IDS替换为从每个客户端的Google Cloud Platform Console项目生成的OAuth 2客户端ID列表,并将ANDROID_AUDIENCE替换为Android Web客户端ID列表 。 网络客户端ID是附加了.apps.googleusercontent.co的客户端ID,例如:YOUR-CLIENT-ID.apps.googleusercontent.com。
保护API进行未经授权的访问的正确方法是什么? 我不需要后端的“用户”帐户,我只希望Android客户端是唯一可以访问API的客户端。 我的REST客户端也可以访问API,尽管已指定了客户端ID,并且在需要时设置了AUTH_LEVEL。
似乎ANDROID_AUDIENCE必须是后端服务器的Web客户端ID。 另外,我必须为我的android应用程序添加一个新的“ Web客户端ID”,但不是“ Android”类型,而是“ Webapplication”。 此客户端ID必须与Android客户端ID一起位于google-services.json中,并且必须位于后端服务器的ALLOWED_CLIENT_IDS数组中。
在每种方法中,我都必须检查get_current_user()。 我不明白为什么这样做是有必要的,但只能通过这种方式起作用。
我确实要说的是,这些文档或更好的“指南”在Google网站上可能会更好一些并且保持一致。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.