Google IAP 不断响应 401 Unauthorized

Google IAP keeps responding with 401 Unauthorized

上下文:

我有两个使用 IAP 保护的项目,它们需要通过 rest 进行通信 API。我在双方都使用 AppEngine 标准,python27 作为运行时。

问题:

即使我在目标项目中授权了服务帐户并使用相同的服务帐户使用文档中的给定代码以编程方式向 IAP 进行身份验证 (make_iap_request)。我仍然收到 401 Unauthorized 响应状态代码。

Link 对于 make_iap_request: https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/iap/make_iap_request.py

PS:我尝试为服务帐户赋予项目的所有者角色以及 Service Account Token Creator 角色,但没有成功。

这是完整的错误代码,在此先感谢您的帮助:

Traceback (most recent call last):
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1535, in __call__
    rv = self.handle_exception(request, response, e)
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1529, in __call__
    rv = self.router.dispatch(request, response)
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1278, in default_dispatcher
    return route.handler_adapter(request, response)
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 1102, in __call__
    return handler.dispatch()
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 572, in dispatch
    return self.handle_exception(e, self.app.debug)
  File "/google-cloud-sdk/platform/google_appengine/lib/webapp2-2.5.2/webapp2.py", line 570, in dispatch
    return method(*args, **kwargs)
  File "/handlers.py", line 25, in get
    req = make_iap_request(API_URL, CLIENT_ID)
  File "/make_iap_request.py", line 79, in make_iap_request
    resp.status_code, resp.headers, resp.text
Exception: Bad response from application: 401L / {'expires': 'Fri, 25 Jan 2019 16:35:30 GMT', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'alt-svc': 'quic=":443"; ma=2592000; v="44,43,39"', 'date': 'Fri, 25 Jan 2019 16:35:30 GMT', 'server': 'GSE', 'content-length': '52', 'cache-control': 'private, max-age=0', 'x-goog-iap-generated-response': 'true', 'x-frame-options': 'SAMEORIGIN', 'content-type': 'text/html; charset=UTF-8'} / u'There was a problem with your request. Error code 13'

TLDR;

使用项目进行身份验证时,客户端 ID 是目标项目的 ID,而不是尝试进行身份验证的项目

嗯,转了一个星期,发现问题了!!!!

这让我很困惑:客户端是连接到目标的东西,但是虽然这两个术语都出现在 IAP 身份验证中,所以我尝试测试它们(客户端 ID),并且它工作了!编码愉快:-)