代码之家  ›  专栏  ›  技术社区  ›  Alberto Geniola

使用默认服务帐户从ComputeEngine向AppEngine发送经过身份验证的HTTP请求

  •  1
  • Alberto Geniola  · 技术社区  · 6 年前

    对于我目前正在开发的项目,我需要将servlet(托管在Google App Engine上)公开给托管在Google Compute Engine上的Java可执行文件(在同一项目中)。这样的servlet执行一些维护任务,所以它永远不应该由未经授权的用户触发。因此,目标是授权来自运行JAR可执行文件的Google计算引擎实例的请求。

    在过去,我通过在HTTPS上公开servlet并依赖“共享机密”解决了同样的问题,AppEngine应用程序和计算引擎实例上运行的JAR都知道这一点。这样,实例调用特定的servlet(公共的),然后servlet验证机密是否正确,如果正确,则允许请求。

    我不喜欢这种方法。当然,我们可以使用质询-响应身份验证或其他身份验证过程(可能通过非对称加密签名)做得更好。然而,这不是我想做的。

    获得相同结果的首选方法是使用计算引擎默认服务帐户。我确信有一种方法可以在计算引擎上创建HTTP POST请求,并通过默认的服务帐户密钥进行身份验证。然后,在servlet上,我将依赖UserService来检查请求是否来自ComputeEngine默认服务帐户,如果是,我将接受这一点。

    然而,我还没有看到任何文档或代码示例来解释如何做到这一点。我怀疑有可能使用默认的计算引擎服务Sccount执行经过身份验证的HTTPRequest(可能添加承载JWT令牌作为授权头?)。

    有人试过这样的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Alex    6 年前

    你有 several options ; OAuth可能是您的最佳选择。