如果使用 msal.js,则在登录期间丢失“让我登录”消息

Keep Me Signed In message missing during login if using msal.js

上下文

我正在开发一个浏览器应用程序,它使用 msal.js 库来允许 Azure Active Directory 帐户访问我们的网站。该应用程序正确设置了 clientId 和范围,它使用 loginRedirectacquireTokenSilent 成功。

问题

我面临的问题是我无法保持会话打开,因为我没有看到保持登录消息 (KMSI),所以我无法回答 'YES' 并进行AADSSO cookie 持久化。因此,在登录过程后,如果浏览器关闭,我需要重新登录。

预期

如果我使用 msal.js 库从我的网站重定向到 Microsoft 登录,我希望看到 KMSI 消息以启用持久会话(出于某种原因我可以看到我是否直接转到 login.microsoftonline.com)

对不起西班牙语:它说你想保持会话打开吗?否/是

问题

如何使用 msal.js 启用 KMSI?

使用 msal.js 时看不到 'Keep me signed in' 登录消息的原因是,当库构建 URL 来执行登录时,它包含一个名为 x- 的查询字符串项更改 microsoftonline.com 登录流程的客户端版本。 如果您从 URL 中删除该项目(例如 &x-client-Ver=1.1.3),您可以看到 'Keep me signed in' 消息。

解决方案是手动修补库以删除它,直到 Microsoft 修复它。像那样:https://github.com/AzureAD/microsoft-authentication-library-for-js/pull/982/commits