我很好奇,对于受Google IAP保护的restful-api进行身份验证的“最佳做法”是什么。
请允许我逐步分解,以阐明我想要实现的目标:
dev.blah.com
。在这里,IAP提示我登录。我登录。我现在可以访问我的SPA。我已经读过我可以在the documentation中进行编程身份验证,但我不确定我的特定用例是否适合编程身份验证,或者它是否甚至是安全的。
那么,我是否正确,我必须实施客户端程序验证工作流程才能访问我的API?
或者是否有另一种方式可以说“一旦我通过身份验证即可访问受IAP保护的资源,我也可以登录这些其他资源。”我不能简单地复制令牌,因为它是http-only
并且cookie仅限于我当前的域。
其他一些信息:
gcloud compute backend-services update [backend-service] --global --iap=enabled,oauth2-client-id=[the_id],oauth2-client-secret=[the_secret]
答案 0 :(得分:0)
让我确保我理解你要做的事情。听起来你想在网络浏览器中用JavaScript调用你的API,这是正确的吗?
如果是,并且:
然后我认为事情会起作用,因为JavaScript生成的HTTP请求将与IAP会话cookie一起发送。 ......哪些不一定是你的设置,或者事情只是工作,显然他们不是。产品:>
如果您无法安排API调用以使用在向SPA进行身份验证时生成的IAP会话cookie,那么这将非常棘手。您不希望从浏览器使用服务帐户身份验证,因为这样可以让所有最终用户访问服务帐户。
嗯,看起来 是一种从JavaScript执行Google OAuth的方法:https://developers.google.com/api-client-library/javascript/features/authentication - 我没有尝试过,但是如果你能够让它工作的话,你应该能够使用像https://cloud.google.com/iap/docs/authentication-howto#authenticating_from_a_desktop_app这样的流程。如果你想走这条路,请告诉我它是怎么回事,我很乐意帮你解开,然后把这个方法添加到我们的文档中!
- Matthew,Google Cloud IAP工程