我目前正在进行一个项目,该项目将自动设置一个新的Firebase/GCloud项目。它在很大程度上依赖于Firebase CLI和gcloud SDK,这些SDK具有几个强制步骤的用户凭据。
我现在正在尝试将这个项目移动到云运行的Docker容器中。我已经能够使用Firebase CLI的内置基于令牌的CI命令,使用用户凭据对其进行身份验证。
我想问一下是否可以使用类似的方法对gcloud SDK进行身份验证。
为什么服务帐户可能不起作用
我意识到像这样的服务到服务程序应该用服务帐户进行身份验证。然而,在我的例子中,程序的流程是这样的:
我无法使用服务帐户来验证步骤2中的请求,因为项目刚刚创建,因此我还没有机会授予任何服务帐户编辑它或下载密钥文件的权限。这就是为什么我希望使用表示用户凭据的令牌进行身份验证。
默认情况下,云运行环境实际上可以访问承载容器的项目的服务帐户。由于此服务帐户没有编辑新创建的项目的权限,因此使用它进行身份验证是毫无意义的。
到目前为止的想法
gCloud auth登录--no-launch-browser
-需要用户交互,并且提供的密钥似乎每个登录会话都是唯一的编辑:我的意图是让不太懂技术的大学通过点击按钮创建一个新的Firebase项目,该项目具有大量预定义的设置。这包括以下步骤:
以上所有步骤都在我的本地系统上工作,当我使用idea#4时,它们也在云运行之外的通用docker容器上工作。我正在处理的问题是验证第2步和第3步的请求。由于这两个请求都处理新创建的项目,所以Cloud Run的默认服务标识目前不能具有验证这些请求所需的角色。这就是为什么我在寻找一种方法来通过Firebase CLI在步骤#1中使用的相同的用户凭据进行身份验证,因为这些凭据在默认情况下具有所有者特权。
我不确定你想实现的目标是否可能。即使黑客攻击是可能的,你也不知道有一天它会因为版本更新或API更改而被打破。
此外,在VM上运行的应用程序中使用个人帐户也不是一个好主意。日志将跟踪您作为用户,而不是应用程序标识(服务帐户)。你的个人行为(在你的计算机上和你对云的访问上)和应用程序行为(代表你执行的)是什么?
如果您关心的是部署,您可以查看terraform,甚至可以编写自己的部署脚本。
我不确定是否已经抓住了你所有的阻滞剂和问题,告诉我们更多,也许有好的变通方法!!
这是服务到服务身份验证中概述的规则的一个例外吗?该规则规定需要设置为接收服务的url(例如https://xxxxx.run.app)。和是一回事吗? 最后,除了使用googlecloudsdk(即imaging不存在)之外,是否还有其他方法使用用户帐户而不是服务帐户进行身份验证?
这里是我的用例。 我已经在私有模式下部署了云运行服务。(与云函数相同的问题) 我正在开发一个使用云运行的新服务。我使用应用程序中的默认凭据进行身份验证。它在Compute Engine和Cloud Run上工作,因为默认凭据是从元数据服务器获得的。 但是,我不能使用我的用户帐户凭据。 日志跟踪在Java、Node或Go中非常清晰:不可能在用户凭据类型上生成标识令牌。 所以, null 爪哇 我做这
警告:这是一篇非常长的帖子,仅仅是因为我不知道如何以其他方式解释我们的具体问题(抱歉)。 短版: 我们正在构建一个非常模块化的Java应用程序套件(客户端和服务器端)。一些客户端必须针对服务器进行身份验证,服务器可以针对不同类型的用户存储进行身份验证。服务器还可以代表其经过身份验证的用户调用其他服务器,即使用其凭据。到目前为止,使用简单的用户名/密码凭据可以很好地工作,但现在我们必须通过Kerbe
我是Spring Security的新手,我做了以下教程:https://windoctor7.github.io/spring-jwt.html 但是我修改了一些数据库中搜索用户的代码,所以,我创建了一个@bean: 1部分,拦截呼叫。 我拦截“登录”并在数据库中搜索用户是否存在: } 用户是正确的,最后一行: 我在AbstractAuthenticationProcessingFilter中遇
我想创建一个登录,用户只需输入他/她的邮件地址,并通过电子邮件进行验证。使用firebase,到目前为止我有这样的代码: > 当用户在将邮件放入字段中后单击按钮登录时。我尝试创建一个新帐户(密码是随机的,因为我不需要它)。如果它不存在,我会发送验证邮件。如果该帐户存在,我会与checkIfVerifiedUser核实用户是否通过单击邮件来验证该帐户。 这是我调用的方法: 问题是我要么firebas