我一直在研究最适合我需要的模式。这是我目前正在运行的。 https://docs.microsoft.com/en-us/azure/active-directory/develop/sample-v2-code
- 我在用着
- VueJS CLI 2(但应该能够很快升级到 VueJS 3。)
- Vuex
- Azure B2C
到目前为止,我已经尝试使用 passport-azure-ad 来实现 VueJS,结果好坏参半。我从 express 服务器收到了我的令牌并创建了 MongoDB 会话,但是,我无法转换 JWT 令牌或将其提供给 Vue。在身份验证并转移到另一台服务器之后,关于该实现如何工作的文档确实不多,但是,我并没有真正深入研究这一点,因为我不知道这是否仍然是使用中间件服务器的正确方法。
Passport-Azure-AD 方法 - https://github.com/AzureAD/passport-azure-ad
优点
- 我喜欢我有一个使用策略进行身份验证和授权的 NPM 包。当我阅读它时,我确实喜欢这种模式,但我看到 MS 告诉我另一个最佳实践是使用带有 PKE 的 MSAL 2 作为最佳实践。是什么赋予了?
缺点
- 默认情况下,这会在 MongoDB 中实现会话管理,现在我需要将其传递给 Vuex。我真的需要两种不同的会话管理策略吗?
- 当有我可以使用的 JS 库时,为客户端运行 VueJS 并为中间件运行快速服务器实例以控制安全性似乎过度。MSAL。
MSAL 2.0 示例代码 - https://github.com/Azure-Samples/ms-identity-javascript-v2
在阅读了 PKE 之后,我相信 MSAL 2.0 有点不同 - https://docs.microsoft.com/en-us/azure/active-directory/develop/scenario-spa-overview
MSAL 2.0 对用户进行身份验证并获取令牌,然后将该令牌发送到 API 并不时刷新。这似乎是与护照不同的策略,而且看起来更干净,而且似乎我可以在没有中间件服务器( express )的情况下实现这一点,只需使用 VueJS 和 vuex。
优点
- 使用 VueJS、vuex 和 axios 可能更容易实现
- 可能不需要实现快速服务器(中间件服务器)
缺点
- 需要实现更多的编码和配置
我已经审查了一些将 Nuxt 与 passport-azure-ad 和 VueJS 一起使用的软件包,但是,我们目前没有使用 Nuxt,并且希望尽可能避免使用它。
我真的需要一些关于如何有效解决这个问题的想法,因为这里有很多选择,而且它们在最佳实践方面相互矛盾。