尝试让python命令行访问(HTTP GET)受IAP保护的应用程序。
使用https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/iap/make_iap_request.py
但是发生403错误异常:服务帐户xxx@xxxxxxxxx-production.iam.gserviceaccount.com无权访问受IAP保护的应用程序。
尝试了以下方法,但是仍然存在上述问题
1.删除/创建服务帐户
2.重新创建json密钥文件
3.授予服务帐户项目owner
权限
if __name__ == '__main__':
os.environ[
"GOOGLE_APPLICATION_CREDENTIALS"] = '/Users/foo/bar.json'
print make_iap_request('https://foo.com/', 'xxxxtheidforthatiapservice.apps.googleusercontent.com')
答案 0 :(得分:2)
我认为您需要遵循Authenticating from a service account程序:
使用OpenID Connect(OIDC)令牌对服务帐户进行身份验证 到受云IAP保护的资源。
- 将服务帐户添加到受Cloud IAP保护的项目的access list中。
生成一个JWT-based access token。这使用了
target_audience
个附加声明,该声明需要一个客户端ID。寻找 您的客户ID,请按照以下步骤操作:a。转到“ Cloud IAP”页面。
b。找到您要访问的资源,然后单击更多>编辑 OAuth客户端。
edit OAuth client on the More menu
c。在出现的凭据页面上,记下客户端ID。
请求一个OIDC令牌以获取受Cloud IAP保护的客户端ID。
- 在
Authorization: Bearer
标头中包含OIDC令牌,以向Cloud IAP保护的资源发出经过身份验证的请求。