Google cloud platform 多个问题重新使用Google Endpoints身份感知代理对GCP上托管的B2B应用程序的G套件用户进行身份验证

Google cloud platform 多个问题重新使用Google Endpoints身份感知代理对GCP上托管的B2B应用程序的G套件用户进行身份验证,google-cloud-platform,firebase-authentication,google-cloud-endpoints,google-workspace,google-identity-toolkit,Google Cloud Platform,Firebase Authentication,Google Cloud Endpoints,Google Workspace,Google Identity Toolkit,我目前正在研究一个绿地项目最合适的认证/授权方法,该项目将完全托管在谷歌云平台上。我写这篇总结是为了对我喜欢的方法做一个合理性检查,并就是否有我不知道的考虑因素或不准确之处寻求反馈。我希望在实施相关战略方面具有相关经验的任何人提供意见 我的主要疑问/担忧是: 如何管理或否定OIDC过程中的作用域?不应由用户授权适当的访问;这应该由创建用户的组织IT管理员设置 G Suite IT管理员能否将参数应用于自动分配预定义的“Google Identity/IAM”策略组/角色的用户(自定义和/或非自

我目前正在研究一个绿地项目最合适的认证/授权方法,该项目将完全托管在谷歌云平台上。我写这篇总结是为了对我喜欢的方法做一个合理性检查,并就是否有我不知道的考虑因素或不准确之处寻求反馈。我希望在实施相关战略方面具有相关经验的任何人提供意见

我的主要疑问/担忧是:

  • 如何管理或否定OIDC过程中的作用域?不应由用户授权适当的访问;这应该由创建用户的组织IT管理员设置
  • G Suite IT管理员能否将参数应用于自动分配预定义的“Google Identity/IAM”策略组/角色的用户(自定义和/或非自定义)
  • 签署JWT/Google ID的G套件用户是否直接与兼容(不需要任何处理/重新编码)
  • 这种方法将来会通过联邦身份方法容纳外部用户,而不对现有流程进行重大重构吗

要求:

  • Angular SPA将是应用程序的单一GUI,托管在GCP/G套件上为组织注册的同一域上
  • SPA将使用GCP的api网关()向GKE micro services(可能都在一个VPC内)和其他G套件服务(驱动器等)发出请求
  • 组织IT G套件管理员可以通过G套件UI创建用户并分配各种(预定义的)IAM策略组/范围,以使用户对组织资源(G套件服务和GCP托管的自定义api/应用程序)的访问权限最低
  • 用户只能使用其orgs G Suite帐户“使用谷歌登录”SPA
  • 如果用户已经登录到他们的组织谷歌帐户,他们不需要再次登录SPA
  • 登录SPA时,应随每个请求一起发送用户凭据,micro服务将使用这些凭据授权自定义业务逻辑,并将这些凭据传递给Google Drive等G套件服务(如果自定义业务逻辑失败,则利用api scopes授权作为附加安全层)
  • 在遥远的将来,有可能允许组织外部的客户/用户利用各种联合身份提供商(Facebook、Twitter等)访问组织托管的SPA和资源(这不是当前的要求,但是长期战略目标)

我认为最适合目的的两种方法是:

1)端点 为了获得用户org&,我们正在使用OpenAPI,即带有的GCP,来管理JWT令牌的身份验证

优点:

  • 在UI门户的内部用户和未来的潜在外部用户之间建立明确的界限
  • 没有IT管理员管理用户的自定义代码
  • 没有用于同步Firebase&G套件用户、角色、权限等的自定义代码,也没有用于访问镜像G套件用户的凭据的自定义代码

或,2)火基 ,&,基于限制对资源的访问

优点/缺点与上述端点相反,如果需要外部用户,则不需要两种单独的身份验证方法


我倾向于端点方法

如何管理或否定OIDC过程中的作用域?不应该这样 由用户授权适当的访问;这应该由 创建用户的IT管理员组织

IAM成员(用户、组、服务帐户等)的权限在Google Cloud IAM中管理。作用域与OAuth一起用于限制IAM已分配的权限。最佳实践意味着分配所需的权限(不再分配),而不是将IAM与作用域结合起来

G套件IT管理员是否可以将参数应用到用户(自定义和/或非自定义)上 自动分配预定义的“Google标识/IAM”策略 小组/角色

G套件和谷歌云是独立的服务。谷歌云支持G套件作为身份提供商(IDP)。权限在Google Cloud IAM中控制,而不是在G套件中控制。您可以将G套件与Google组结合起来,将IAM成员放入组中,以便于IAM管理

签署JWT/Google ID的G套件用户是否可以直接兼容 使用端点+IAP(不需要任何处理/重新编码)

Google帐户(G套件)不向其成员帐户提供私钥。因此,您不能使用签名JWT。签名JWT是一种较旧的授权机制,用于服务帐户。用户凭据的正确方法是OAuth 2.0访问和标识令牌。对于管理员,可以使用具有域范围委派的服务帐户

这种方法能否通过联邦身份容纳外部用户 方法,将来不需要对现有流程进行重大重构 (例如Firebase auth)

这是一个很难回答的问题。谷歌云确实支持外部身份提供者,但我发现这充其量是有问题的。您也可以使用身份同步,但这也没有很好地实现。如果您选择谷歌云路线,请使用G套件作为您的身份提供商,并使用谷歌云IAM进行授权

我认为你的问题缺乏的一个重要方面是理解授权在谷歌云和谷歌API中是如何工作的。这些服务主要使用OAuth 2访问令牌和标识令牌。这因服务和所需访问类型而异。这意味着您的应用程序需要了解它正在访问的服务以及如何提供授权。我有一种感觉,您希望Firebase/Endpoints能为您做到这一点

另一个