Google Idenity Aware Proxy在SPA上使用API​​进行身份验证

时间:2018-05-22 20:52:57

标签: google-iap

我很好奇,对于受Google IAP保护的restful-api进行身份验证的“最佳做法”是什么。

请允许我逐步分解,以阐明我想要实现的目标:

  • 转到我的开发环境的网址:dev.blah.com。在这里,IAP提示我登录。我登录。我现在可以访问我的SPA。
  • 我正在浏览我的SPA。但!我无法与我的API通信,因为它也受到IAP的保护。

我已经读过我可以在the documentation中进行编程身份验证,但我不确定我的特定用例是否适合编程身份验证,或者它是否甚至是安全的。

那么,我是否正确,我必须实施客户端程序验证工作流程才能访问我的API?

或者是否有另一种方式可以说“一旦我通过身份验证即可访问受IAP保护的资源,我也可以登录这些其他资源。”我不能简单地复制令牌,因为它是http-only并且cookie仅限于我当前的域。

其他一些信息:

  • 我的服务在Google Kubernetes Engine群集中运行,并根据我声明的入口对象自动创建了负载均衡器。
  • 每个受IAP保护的环境都会获得自己的OAuth凭据,我将负载均衡器配置为使用IAP:gcloud compute backend-services update [backend-service] --global --iap=enabled,oauth2-client-id=[the_id],oauth2-client-secret=[the_secret]

1 个答案:

答案 0 :(得分:0)

让我确保我理解你要做的事情。听起来你想在网络浏览器中用JavaScript调用你的API,这是正确的吗?

如果是,并且:

  • 所有后端服务都配置为使用相同的OAuth客户端ID。
  • API和SPA在同一个域内提供服务。

然后我认为事情会起作用,因为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工程

相关问题