首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AppEngine到云功能的服务帐户标识

从AppEngine到云功能的服务帐户标识
EN

Stack Overflow用户
提问于 2019-10-17 19:35:25
回答 1查看 84关注 0票数 1

我有一个私有的函数,我想从另一个项目的AppEngine应用程序中调用它。

理想情况下,AppEngine服务帐户将在我的云函数上有roles/cloudfunctions.invoker,我会关闭所有其他调用者,而且我也不必担心CF中的auth。我正在努力把AppEngine的身份传递出去。

谷歌的文档展示了如何从一个云函数到另一个云函数执行此操作,但是AppEngine使用自己的身份库来简化访问令牌的获取。AppEngine文档大纲:

有任何方法来包含AppEngine标识,比如谷歌的原生云函数invoker角色,请求会通过吗?

EN

回答 1

Stack Overflow用户

发布于 2019-10-18 11:33:50

对于这种情况,您需要自己以编程方式进行身份验证。

首先,您需要将应用程序引擎服务帐户添加到云函数权限中。

在此之后,您需要遵循这种情况的步骤。基本上,您需要创建一个JWT,授权它,然后将JWT包含在您的请求中。这里您可以找到一个用于创建和授权JWT的代码示例。

我在蟒蛇里复制了你的处境。我使用了我发送给您的链接中的代码,然后在我完成了JWT之后,我提出了如下请求:

代码语言:javascript
复制
@app.route('/')
def index():
  data = {'headers':      request.headers,
        'service_name': os.environ.get('GAE_SERVICE', '(running locally)'),
        'environment':  os.environ}
  return render_template('index.html', data=data)

@app.route('/request')
  def send_request():
     import requests
     receiving_function_url = 'YOUR-CLOUD-FUNCT-URL'
     r=requests.get("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token?audience="+receiving_function_url,
                headers={'Metadata-Flavor': 'Google'})

     response = make_iap_request('YOUR-CLOUD-FUNCTION-URL', 'YOUR-CLOUD-FUNCTION-URL')

     print(response)

     return response




if __name__ == '__main__':
app.run('127.0.0.1', port=8080, debug=True)

在requirements.txt中,您需要的依赖项:

代码语言:javascript
复制
flask
PyJWT==1.7.1
cryptography==2.7
google-auth==1.6.3
gunicorn==19.9.0
requests==2.22.0
requests_toolbelt==0.9.1

在这个存储库中,您可以找到更多关于如何处理IAP(身份感知代理)请求的代码示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58439618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档