上下文:
我有两个受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'
答案 0 :(得分:1)
TLDR;
使用项目进行身份验证时,客户端ID是目标项目的ID,而不是尝试进行身份验证的项目
好吧,经过一个星期的转身,我发现了问题!!!!
这让我感到困惑:客户端就是连接到目标的东西,但是虽然这两个术语都在该IAP身份验证中存在,所以我尝试测试它们两个(客户端ID),并且它起作用了!快乐的编码:-)