我特此坚持只使用 var request =
要求('request@2.56.0');使这一切正常工作。我想问怎么
我能管理这个吗?我可以调用一些身份验证服务
对吧?
Google 不提供您可以调用的简单 HTTP 端点。如果您认为通过该过程,则需要授权来调用生成授权凭证的端点。鸡和蛋的情况。
Google 尚不接受端点上的 Auth0 凭据来交换 Google 凭据。但是,请继续阅读有关 Workload Identity Federation 的更多信息,它最终可以/可能提供这种能力。
对于您创建可以生成 Google 访问或身份令牌的 Auth0 挂钩的目标,没有简单的答案。以下详细信息可帮助您了解可能的情况。
要从 Google Cloud 服务帐户 JSON 密钥文件转到访问令牌还需要库。该过程是创建 JWT,签署 JWT,将 JWT 交换为访问令牌。我写了一篇文章,展示了如何在 Python 中做到这一点。 Node.js 的过程类似。你的问题是这个过程对于 Auth0 钩子来说太复杂了。
Google Cloud – Creating OAuth Access Tokens for REST API Calls
Google 最近推出了 Google Workload Identity Federation,它支持通过联合和服务帐户模拟将 OIDC 令牌交换为 Google OAuth 访问令牌。该过程只是一系列 HTTP 方法调用。我正在撰写几篇关于如何做到这一点的文章,但目前还没有完成。
Accessing resources from an OIDC identity provider
一种可能性是创建另一个 Cloud Function 或 Cloud Run 服务,您可以在单个 HTTP GET 中调用它,从而为您创建令牌。这样您就可以使用 Google 客户端库。您的函数/运行代码将接收 HTTP GET 请求,与客户端库交互以创建访问令牌并将令牌作为 HTTP GET 响应返回。
然而,这就造成了先有鸡还是先有蛋的局面。您需要授权对 Function/Run 代码的请求以获取访问令牌。
您可能希望更改策略并改为禁用 Cloud Functions 授权并在您的代码中验证 Auth0 身份令牌并跳过基于 Google 的授权。
Auth0: Validate ID Tokens
Auth0: Validate JSON Web Tokens
注意您选择的任何过程,因为获得正确和安全的授权并不容易。
注意:您的问题是“我想通过 HTTP 触发我的云功能”。我不确定您打算使用什么方法。如果您使用的是 Cloud Functions 授权,则需要 OAuth 身份令牌。这为该过程增加了更多步骤。我还没有弄清楚如何使用 Workload Identity Federation 做到这一点,但 Functions/Run 代码可以轻松为您处理。
总而言之,Cloud Functions 旨在用于无服务器框架中的小型、轻量级代码。添加授权后,复杂性就会增加。只要你坚持使用谷歌云授权,一切都很容易。一旦您尝试从一个身份系统 (Auth0) 转到另一个身份系统 (Google Cloud IAM),复杂性就会急剧增加。