小编Wal*_*ivE的帖子

使用系统浏览器重定向到Electron后是否可以关闭Azure AD B2C的登录窗口?

现在的情况

我们构建了一个使用由 Azure AD B2C 保护的 Web API 的 Electron 应用程序。身份验证过程如下:

  • 用户想要登录
  • Electron 准备初始 OIDC 请求(包含 oidc 范围的返回类型代码)
  • b2clogin.comElectron(主线程)使用正确的租户打开系统浏览器
  • 用户输入凭据并在成功时重定向(使用自定义协议,例如my-awesome-app://
  • Electron 应用程序处理重定向(新实例处理、URL 解析,一切正常)
  • 正确解析的信息用于分派最后一个身份验证请求(再次在主进程上)
  • 应用程序收到身份验证令牌并且用户已登录

所有这一切都不需要嵌入式 Web 视图和处理本地主机重定向的本地 Web 服务器。至少根据我的理解,我们应该遵守有关本机应用程序中 OIDC 使用的最新技术。

问题

上述过程运行良好 - 它只有一个警告:用户输入凭据的浏览器窗口保持打开状态。据我所知,发生这种情况是因为浏览器尽职尽责地进行了重定向,但永远不知道它是否成功(即使重定向是由操作系统处理的,浏览器的网络监视器也会显示失败)。

据我通过检查 GitHub 桌面应用程序、Slack 桌面应用程序以及Brock Allen 的.NET 控制台应用程序示例了解到,这种行为是可以预料的。Azure AD B2C 的主要问题是身份提供者永远不会离开保存输入凭据的登录表单。

据我所知(我在 Google 和 Microsoft Docs 上花了很多时间)没有明显的方法可以改变这种行为。这些应用程序使用的 IDP 会导航到另一个页面,并在登录成功时显示一条消息以关闭选项卡。我尝试在 MSAL 文档中寻找指导 - 因为它是 Microsoft 自己的用于此用例的库 - 但他们似乎根本没有考虑自定义协议(显然,对于UWP 甚至不鼓励使用系统浏览器) 。

在 Microsoft 实习期间,曾尝试为 Electron 提供 MSAL 体验,但这一努力似乎已被放弃。它还会在我们积极尝试避免的同一进程中使用新的电子浏览器窗口。 …

electron azure-ad-b2c microsoft-identity-platform

7
推荐指数
0
解决办法
799
查看次数