繁体   English   中英

Cloud Endpoint身份验证受众

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM