从 Angular 访问 Google IAP 保护 API

Access Google IAP protected API from Angular

我的应用程序有 2 个模块

两者都部署在 Google 应用引擎 (GAE)

我使用 Google IAP 进行身份验证。启用 IAP 后,是否有任何方法可以为组织内的不同用户生成 IAP JWT 令牌 以验证 APIs来自网络客户端。

我尝试使用 服务帐户 生成令牌机制。但对于我的场景,我只想验证和授权 users 而不是服务帐户。我发现 this 引用为用户启用网络资源访问,但它使用的是基于 cookie 的授权。并且对于angular.

这样的应用不推荐使用这种方式

如果您使用 IAP 来保护您的后端 api,这意味着您的用户有一个 Google 帐户或一个在 Cloud Identity 中管理的帐户。

在您的 Angular 前端应用程序中,您可以使用 Google Sign-In for Websites.

检索用户的 JWT 令牌

为了轻松地将 Google Sign-in 与 Angular 集成,我建议您使用 ng-gapi from Ruben

工作流程的主要内容:

  • Angular 在幕后使用 ng-gapiGoogle Sign-in
  • 用户使用他们的 Google 帐户
  • 进行身份验证
  • 您可以检索 Google用户 idToken,这是一个 JWT 令牌。
  • 每个 HttpRequest 都可以用 Authorization: Bearer JWT
  • 执行
  • IAP 将接受请求。

为了更好地理解如何使用 ng-gapi,请查看库创建者制作的 stackblitz Demo

我还向您推荐这些资源:

  • 关于 Angular 无状态身份验证工作流程。如果您使用 IAP,只需跳过 Spring Boot JWT 部分。

  • Google Sign-In for Websites官方文档

请注意,您需要使用Identity-Aware Proxy为您的应用配置的OAuth 2.0客户端ID,并添加正确的授权JavaScript 起源.

是的,您可以使用 angular-oauth2-oidc 生成 JWT 令牌。

获取默认的 IAP Web App 客户端 ID 和客户端密码。输入凭据后,使用 AuthConfig 并重定向到您的 link;您可以在重定向后捕获令牌。

这个 link 包含所有详细信息:

https://medium.com/@ishmeetsingh/google-auth-integration-with-angular-5-and-angular-oauth2-oidc-ed01b997e1df

您已告知您已尝试通过服务帐户进行身份验证。您是否能够为服务帐户生成 JWT?我能够为个人帐户捕获 JWT 令牌并使用它。

请提供更多关于您如何通过服务帐户进行身份验证的信息。

谢谢, 巴拉斯