google-cloud-endpoints - Cloud Identity 和 Cloud Endpoints,是否有任何方法可以禁止角色/组中的某些用户向端点发出 POST/GET 请求

标签 google-cloud-endpoints google-cloud-identity

例如,假设用户 A 需要对某个端点具有 GET 权限但没有 POST 权限。有没有办法:

  1. 在特定用户无法发出特定类型请求的地方创建角色 到终点?
  2. 确保端点遵循这些规则?

最佳答案

关于您的第一个问题,Cloud IAM 角色旨在控制用户帐户对项目中存在的服务和产品的访问级别。 IAM roles for Cloud Endpoints允许限制哪些用户可以启用您的 API,但他们不提供如此细粒度的权限来控制确实允许调用的用户如何与您的 API 的特定路由进行交互。

现在,可以限制对特定 API 方法的访问,我将在下面描述两种方法:

  • 使用 Auth0 并以编程方式检查用户授权:当允许访问端点的用户发出请求时,其身份将传递到 header X-Endpoint-API- 下的处理代码用户信息。然后您可以检查谁是来电者以否定答案。这将需要一些数据库通信来检查受限用户或对用户进行硬编码的可疑天真方法。从安全的角度来看,这种方法是可靠的,因为 Cloud IAP 会阻止未经授权的用户访问 API,然后您可以根据需要进一步限制访问范围。这种方法的唯一缺点是它会产生一些延迟。参见 here用于多种语言的文档和代码示例链接。
  • API key :API key 提供了一种 allowing/restricting access 的方式只要您可以区分端点路由,就可以使用各个方法。例如,您可能允许某些键调用 yourendpoint/route/method1 但限制 yourendpoint/route/method2。这有几个缺点,首先是 API key 用于识别项目/应用程序/网站/IP,而不是个人用户,这并不是您要问的。第二个是它们不如身份验证安全,一旦您的 API key 公开,几乎任何人都可以使用它,这可能会给您的计费帐户带来意外费用。尽管如此,为了完整起见,我还是想提及它,因为它在其他情况下可能会有用。参见 here了解 API key 的概览。

总的来说,我建议使用带有编程身份验证的 Auth0。

关于google-cloud-endpoints - Cloud Identity 和 Cloud Endpoints,是否有任何方法可以禁止角色/组中的某些用户向端点发出 POST/GET 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60266463/

相关文章:

python - Cloud Endpoints 返回 401 Jwt issuer is not configured

google-app-engine - 对受 IAP 保护的应用程序的服务帐户请求结果为 'Invalid GCIP ID token: JWT signature is invalid'

python - Google API 云身份组().create() : what is the field customer_id?

go - 如何从应用程序调用谷歌云身份API

android - 谷歌云端点应该使用哪个网络库

java - 动态添加clientIds到API注释

google-app-engine - 在 App Engine Java 上将 Objectify 与 Google Cloud Endpoints 结合使用是否有任何注意事项?

google-app-engine - Google App Engine 突然开始端点身份验证失败