我们正在开发两个新的react native应用程序,需要在这两个地方集成Azure AD认证。我们也有现有的web应用程序,Azure AD启用,用户可以从我们的(新的)本地应用程序打开web链接。
我们决定使用MSAL库(react-native-msal)来实现认证部分,主要是为了支持本地应用程序与我们在Safari浏览器中打开的web应用程序之间的SSO。
我们已经遵循了react-native-msal库建议的所有步骤,并且能够在两个本机应用程序之间实现SSO。
但是,当我登录到一个本机应用程序,并尝试使用react链接打开web应用程序链接时,web应用程序提示输入登录凭据。
注意:为了通过本地应用验证用户,我们使用">认证会话";与prefersEphemeralWebBrowserSession = false";理想情况下应该分享SSO和Safari浏览器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的文档中记录。