0

我正在使用 expo-cli 开发一个 React Native 应用程序。我正在使用 ADFS 对应用程序中的用户进行身份验证,特别是,我正在使用 MSAL.js。我已经在网络上进行了身份验证,但是,我无法让应用程序在 iOS 或 Android 上运行。我收到错误消息:“提供的缓存位置无效。提供的值:localStorage。可能的值是:localStorage、sessionStorage。”

我尝试使用 sessionStorage 而不是 localStorage,但我得到了同样的错误,除了它告诉我提供的值是 sessionStorage。

我在这里找到了一个有人也遇到类似问题的线程:MSAL UserAgentApplication: Local storage not working。我尝试了解决方法,但随后出现错误:“未定义不是构造函数(评估'new Msal.Storage(“localStorage”)')”。

如果我尝试调用 Msal.Storage("localStorage"),它会告诉我 msal.Storage 不是函数。

我还尝试从我的配置中显式地将值传递给 UserAgentApplication 函数,而不是传递配置本身:

var myMSALObj = new Msal.UserAgentApplication(msalConfig.auth.clientId, msalConfig.auth.authority, msalConfig.auth.redirectURI, { cacheLocation: 'localStorage' });

这是我认为问题所在的代码片段:

const msalConfig = {
    auth: {
        clientId: "<client-Id>",
        authority: "<authority>",
        redirectURI: "http://localhost:19006"
    },
    cache: {
        cacheLocation: "localStorage",
        storeAuthStateInCookie: true
    }
};

//new Msal.Storage("localStorage");
var myMSALObj = new Msal.UserAgentApplication(msalConfig);

我希望对 UserAgentApplication 的调用能够在 iOS 和 Android 上正确使用 localStorage 作为缓存,但情况似乎并非如此。不过,该应用程序可以在我笔记本电脑上的浏览器中完美运行,没有任何缓存/本地存储问题。是否有任何不需要 Msal.Storage 的解决方法/修复?任何帮助深表感谢!

4

1 回答 1

0

我只是编写了自己的库来做到这一点。我猜 MSAL.js 没有正确的调用来使用移动浏览器。

https://yarnpkg.com/en/package/azure-ad-graph-expo

下面的库正是我想要的,即登录 Azure AD,检索令牌,然后使用该令牌查询 MS 图形以获取适当的用户数据。

于 2019-11-18T09:06:44.910 回答