Google IAP持续响应401未经授权

时间:2019-01-25 16:56:01

标签: python google-app-engine google-cloud-platform google-iap

上下文:

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

问题:

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

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'

1 个答案:

答案 0 :(得分:1)

TLDR;

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

好吧,经过一个星期的转身,我发现了问题!!!!

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