我目前正在使用 Angular Forntend 和 Python 后端开发一个单页 Web 应用程序。两者都作为谷歌应用程序引擎内的服务部署。 Angular 前端使用后端服务的 URL 来访问后端的 API,而前端的 URL 则用于访问应用程序。
我已经使用 Google 应用引擎提供的防火墙限制了访问。我现在想要对用户进行身份验证和授权。我想使用 Azure AD 向预定义的用户组授予访问权限。只有这些用户才能打开前端。他们不应该能够通过 URL 访问后端,但当然能够通过前端访问后端提供的数据。没有用户特定的功能。每个用户都会看到相同的前端并可以访问相同的数据。
我很难完成这项任务,因为我从未做过这些事情。有人做过这个吗?我一般应该采取哪些步骤?我是否必须更改 Angular 前端,或者是否可以仅在 Azure AD 中注册我的应用程序并在那里配置所有内容?任何想法或来源将不胜感激。
干杯,
汤姆
最佳答案
如果 Angular 应用程序确实是一个 SPA(即它在浏览器中运行),则您不需要 App Engine。您可以将其放在云存储中并通过负载均衡器将其发布为网站。
您可以将 AD 身份联合到 GCP IAM ( https://cloud.google.com/architecture/identity/federating-gcp-with-active-directory-introduction ),但这可能不是您想要的方法。听起来这些人只需要访问应用程序而不是 GCP。您也许应该考虑使用第三方 IDM 解决方案,例如 Auth.0 或 Okta。然后,您可以利用此解决方案来联合身份并向用户提供身份验证流程。 IDM 将生成 JWT token ,然后您可以在 App Engine 上运行的服务器上验证该 token (针对每个请求)。
限制对客户端文件的访问可能是一个额外的问题,可以通过网络配置来解决,但您应该问问自己是否值得。您的所有业务逻辑都应该位于服务器上,这意味着您的客户端文件可以从互联网访问。
编辑:
这是一篇与 Cloud Run 相关的好文章,我认为您无论如何都应该通过 App Engine 使用它。 https://cloud.google.com/run/docs/authenticating/end-users
因此,如果您愿意的话,您也可以坚持使用所有 Google 服务。
关于angular - 使用 Azure AD 保护单页 Google 应用引擎 Web 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62387607/