访问受IAP保护的应用程序时,服务帐户的访问被拒绝

时间:2019-03-26 03:13:13

标签: python google-cloud-platform in-app-purchase google-oauth

尝试让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')

1 个答案:

答案 0 :(得分:2)

我认为您需要遵循Authenticating from a service account程序:

  

使用OpenID Connect(OIDC)令牌对服务帐户进行身份验证   到受云IAP保护的资源。

     
      
  1. 将服务帐户添加到受Cloud IAP保护的项目的access list中。
  2.   
  3. 生成一个JWT-based access token。这使用了target_audience个附加声明,该声明需要一个客户端ID。寻找   您的客户ID,请按照以下步骤操作:

         

    a。转到“ Cloud IAP”页面。

         

    b。找到您要访问的资源,然后单击更多>编辑   OAuth客户端

         

    edit OAuth client on the More menu

         

    c。在出现的凭据页面上,记下客户端ID。

  4.   
  5. 请求一个OIDC令牌以获取受Cloud IAP保护的客户端ID。

  6.   
  7. Authorization: Bearer标头中包含OIDC令牌,以向Cloud IAP保护的资源发出经过身份验证的请求。
  8.