React Native MSAL - 从本机到 Web 的 SSO 不起作用 - iOS

React Native MSAL - SSO does not work from Native to Web - iOS

我们正在开发两个新的 React Native 应用程序,需要在两个地方集成 Azure AD 身份验证。我们还有启用了 Azure AD 的现有 Web 应用程序,用户可以从我们的(新)本机应用程序打开 Web link。

我们决定使用MSAL库(react-native-msal)来实现身份验证部分,主要是为了支持本地应用程序+我们在Safari浏览器中打开的网络应用程序之间的SSO。

我们已按照 react-native-msal 库建议的所有步骤进行操作,并且能够在两个本机应用程序之间实现 SSO。

但是,当我登录一个本机应用程序并尝试使用 React linking 打开 Web 应用程序 link 时,Web 应用程序提示输入登录凭据。

注: 为了通过本机应用程序对用户进行身份验证,我们使用“Authentication Session”和“prefersEphemeralWebBrowserSession = false”,理想情况下应该与 Safari 共享 SSO cookie浏览器。

但显然,这似乎行不通。

我想了解一下这个问题,看看其他人是否也面临这个问题?还是只有我们?

在这种情况下,您需要一个首选用户令牌并将其与登录请求一起发送。为了同时捕获用户的详细信息,我建议将详细信息存储在所有应用程序都知道的域范围 cookie 中。

  // Store the user details after login
document.cookie = "msal_details=Paul@xyz-corp.com;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 的文档中。