【问题标题】:React Native MSAL - SSO does not work from Native to Web - iOSReact Native MSAL - SSO 不能从 Native 到 Web - iOS
【发布时间】:2021-10-04 06:55:44
【问题描述】:

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

我们决定使用 MSAL 库 (react-native-msal) 来实现认证部分,主要是为了支持原生应用 + 我们在 Safari 浏览器中打开的 Web 应用之间的 SSO。

我们已遵循 react-native-msal 库建议的所有步骤,并且能够在两个原生应用之间实现 SSO。

但是,当我登录到一个本机应用并尝试使用反应链接打开网络应用链接时,网络应用会提示输入登录凭据。

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

但显然,这似乎行不通。

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

【问题讨论】:

    标签: ios react-native azure-active-directory single-sign-on msal


    【解决方案1】:

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

    最后,您需要在您的应用程序中实现它。

    【讨论】:

    • 感谢@Rutha 的建议。但是,根据 react-native-msal 库文档,SSO 功能应遵循其指南和示例来工作。但在这种特定情况下它不起作用。除非库本身存在错误,否则我不应该对代码进行任何调整以使其正常工作。
    • 当今的许多浏览器都在阻止第三方 cookie - 对与浏览器栏中显示的不同域的请求的 cookie。这打破了隐式流程并需要新的身份验证模式才能成功登录用户。 docs.microsoft.com/en-us/azure/active-directory/develop/…
    • 我们已经在使用验证码流。在实际设备上测试后,我们发现这在模拟器上不起作用。感谢您的帮助!
    【解决方案2】:

    嗯,原来是模拟器的问题。此功能仅适用于物理设备(iPhone/iPad),不适用于模拟器。

    这应该已经记录在 react-native-msal 的文档中。

    【讨论】:

    • OMFG 谢谢你,我已经拔了一个星期的头发了!!!
    猜你喜欢
    • 2018-07-02
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2022-10-25
    • 2021-12-06
    • 2021-07-23
    • 2017-10-11
    • 2023-04-11
    相关资源
    最近更新 更多