我们正在开发两个新的 React Native 应用程序,并且需要在这两个地方集成 Azure AD 身份验证。我们还有启用了 Azure AD 的现有 Web 应用程序,用户可以从我们的(新)本机应用程序打开 Web 链接。
我们决定使用 MSAL 库(react-native-msal)来实现身份验证部分,主要是为了支持本机应用程序 + 我们在 Safari 浏览器中打开的 Web 应用程序之间的 SSO。
我们已遵循react-native-msal库建议的所有步骤,并且能够在两个本机应用程序之间实现SSO。
但是,当我登录到一个本机应用程序并尝试使用 React 链接打开 Web 应用程序链接时,该 Web 应用程序会提示输入登录凭据。
注: 为了通过本机应用程序对用户进行身份验证,我们使用“Authentication Session”和“prefersEphemeralWebBrowserSession = false”,理想情况下应与 Safari 浏览器共享 SSO cookie。
但显然,这似乎行不通。
我想了解一下这个问题,并看看其他人是否也面临这个问题?还是只有我们?
在这种情况下,您需要一个首选用户令牌并将其与登录请求一起发送。为了同时捕获用户的详细信息,我建议将详细信息存储在所有应用程序都知道的域范围 cookie 中。
// Store the user details after login
document.cookie = "[email protected];domain=.xyz-corp.com;path=/"
// use the user details
var user = getCookieByName("msal_username");
userAgentApplication.loginRedirect(scopes, "&login_hint=" + user);
最后,您需要在您的应用程序中实现这一点。
嗯,原来是模拟器的问题。此功能仅适用于物理设备(iPhone/iPad),不适用于模拟器。
这应该已记录在react-native-msal 的文档中。