如何在GCP源代码中保护Web客户端ID

时间:2017-11-17 17:01:23

标签: google-app-engine google-cloud-platform google-cloud-endpoints

我的GAE应用程序在GCP中发布了一些API,并使用以下结构:

# Replace the following lines with client IDs obtained from the APIs
# Console or Cloud Console.
WEB_CLIENT_ID = '????????????.apps.googleusercontent.com'

ALLOWED_CLIENT_IDS = [WEB_CLIENT_ID, endpoints.API_EXPLORER_CLIENT_ID]
SCOPES = [endpoints.EMAIL_SCOPE]

@endpoints.api(name=API_NAME,
               version=API_VERSION,
               description='An API to manage languages',
               allowed_client_ids=ALLOWED_CLIENT_IDS,
               scopes=SCOPES)

我怀疑是否有人从我的机器或GitHub项目中选择了这个源代码。他或她可以使用发现的Web客户端ID访问API。

在这种情况下,最佳做法是什么?

我承认客户端可以公开ID,并且有人可以访问它。但我相信这是另一回事。

2 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。一种方法是始终检查客户端ID的默认值,以便当人们检查您的代码时,他们必须修改它以进行部署。您还可以将客户端ID移动到其自己的模块,而不是将其检入,并期望他们使用自己的客户端ID创建自己的模块。这样可以避免在任何时候都为已签入文件修改状态。

答案 1 :(得分:0)

客户端ID本身不足以生成有效令牌。所涉及的加密将阻止此人访问您的API。