如果您的应用处理来自用户的请求,则最佳实践是只让允许的用户进行访问。用户通常没有您的 Google Cloud 项目或 Cloud Run 服务的 IAM 权限。
我们区分两种类型的用户:
对最终用户进行身份验证
如果要使用电子邮件/密码、电话号码、Google、Facebook 或 GitHub 等社交服务提供方或自定义身份验证机制对用户进行身份验证,则可以使用 Identity Platform。使用 Firebase Authentication 类似于使用 Identity Platform。
您需要一个公共 Web 应用或移动应用来处理登录流程,然后对 Cloud Run 服务发出经过身份验证的 API 调用。此公共 Web 应用本身可以托管在公共 Cloud Run 服务上。
如需了解使用 Identity Platform 进行最终用户身份验证的完整教程,请参阅 Cloud Run 最终用户身份验证教程。
将代码添加到您的 Cloud Run 服务以验证 ID 令牌。
在 Web 应用或移动应用中执行以下操作:
- 使用适当的 Firebase Auth 客户端库来获取 ID 令牌:
- Android:使用
GetTokenResult().getToken()
方法。 - iOS:使用
User.getIDTokenResult(completion:)
方法。 - 网站:使用
firebase.User.getIdToken()
方法。
- Android:使用
- 将该 ID 令牌添加到服务请求的
Authorization: Bearer ID_TOKEN
标头中。
- 使用适当的 Firebase Auth 客户端库来获取 ID 令牌:
您可以使用以下任一方法访问用户个人资料信息:
- 使用 Firebase Admin SDK 发出网络请求以检索用户数据。
- 借助 Google API 客户端库,使用最适合您所选运行时的方法检索用户数据。
对于使用此身份验证技术的应用的端到端演示,请遵循教程:Cloud Run 最终用户身份验证。
对内部用户进行身份验证
对于内部用户身份验证,您可以使用 Identity-Aware Proxy。
如需为现有 Cloud Run 服务设置 Identity-Aware Proxy,请参阅为 Cloud Run 启用 Identity-Aware Proxy 文档。
如需了解如何使用 OAuth 2.0 向受 Identity-Aware Proxy 保护的 Cloud Run 服务验证用户或服务账号的身份,请参阅程序化身份验证文档。