我们构建了一个使用由 Azure AD B2C 保护的 Web API 的 Electron 应用程序。身份验证过程如下:
b2clogin.comElectron(主线程)使用正确的租户打开系统浏览器my-awesome-app://)所有这一切都不需要嵌入式 Web 视图和处理本地主机重定向的本地 Web 服务器。至少根据我的理解,我们应该遵守有关本机应用程序中 OIDC 使用的最新技术。
上述过程运行良好 - 它只有一个警告:用户输入凭据的浏览器窗口保持打开状态。据我所知,发生这种情况是因为浏览器尽职尽责地进行了重定向,但永远不知道它是否成功(即使重定向是由操作系统处理的,浏览器的网络监视器也会显示失败)。
据我通过检查 GitHub 桌面应用程序、Slack 桌面应用程序以及Brock Allen 的.NET 控制台应用程序示例了解到,这种行为是可以预料的。Azure AD B2C 的主要问题是身份提供者永远不会离开保存输入凭据的登录表单。
据我所知(我在 Google 和 Microsoft Docs 上花了很多时间)没有明显的方法可以改变这种行为。这些应用程序使用的 IDP 会导航到另一个页面,并在登录成功时显示一条消息以关闭选项卡。我尝试在 MSAL 文档中寻找指导 - 因为它是 Microsoft 自己的用于此用例的库 - 但他们似乎根本没有考虑自定义协议(显然,对于UWP 甚至不鼓励使用系统浏览器) 。
在 Microsoft 实习期间,曾尝试为 Electron 提供 MSAL 体验,但这一努力似乎已被放弃。它还会在我们积极尝试避免的同一进程中使用新的电子浏览器窗口。 …