发布于 2019-10-18 11:33:50
对于这种情况,您需要自己以编程方式进行身份验证。
首先,您需要将应用程序引擎服务帐户添加到云函数权限中。
在此之后,您需要遵循这种情况的步骤。基本上,您需要创建一个JWT,授权它,然后将JWT包含在您的请求中。这里您可以找到一个用于创建和授权JWT的代码示例。
我在蟒蛇里复制了你的处境。我使用了我发送给您的链接中的代码,然后在我完成了JWT之后,我提出了如下请求:
@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中,您需要的依赖项:
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(身份感知代理)请求的代码示例。
https://stackoverflow.com/questions/58439618
复制相似问题