1

语境:

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

问题:

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

链接make_iap_requesthttps ://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'
4

1 回答 1

1

TLDR;

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

嗯,转了一圈后,我发现问题了!!!!

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

于 2019-01-29T17:37:45.293 回答