繁体   English   中英

在azure webapp中使用MSAL.js进行身份验证

[英]Authenticating using MSAL.js in azure webapp

我已经尝试将MSAL实现到我正在开发的webapp中,但我遇到了一些问题,尤其是IE和Edge。

第一个问题是chrome和IE / Edge。 登录后我得到2个弹出窗口。 在第二个弹出结束之前,程序已经调用了Graph API并返回了数据,所以为什么它显示,我不知道。 代码如下:

function login(){
    clientApplication = clientApplication || new Msal.UserAgentApplication({ClientId}, null, function (errorDes, token, error, tokenType) {});

    clientApplication.loginPopup(["user.read files.readwrite.all group.readwrite.all"]).then(function (token) {
        getAccessToken();
    }, function (error) {
        // handle error
    });
}

function getAccessToken() {
    clientApplication.acquireTokenSilent(["user.read files.readwrite.all group.readwrite.all"]).then(function (token) {
        //Call Graph API and do stuff.
    });
}

除了显示2个弹出窗口外,这在chrome中完美运行。 如果我遗漏任何这些,我将不会被认证。

现在,第二部分是一个但问题更多。 我已将polyfill包含在promises中,以使其在IE中运行,但我仍然遇到了一些奇怪的事情。 如果我没有在IE中禁用保护模式,则两个弹出窗口都会打开,但第一个弹出窗口会重定向到https:// {site} .azurewebsites.net / null。 第二个弹出窗口重定向到about:blank。 正如预期的那样,两个窗户都没有关闭。

但是,如果我按照内部测试的MSAL.js文档中的建议禁用保护模式,我会进行身份验证 - 弹出窗口不会自动关闭。 对于多租户webapp来说,这显然不是一个可行的解决方案。

我的身份验证流程有什么问题,或者我只是遗漏了什么? 有没有关于在单页应用程序中使用MSAL.js运行身份验证的体面文档?

编辑:经过一番挖掘,我发现authflow也是在用于进行静默调用的iframe中启动的。 有没有理由在iframe中加载整个页面? 它运行我在dom准备就绪时运行的所有功能。

似乎没有呼叫是静音的,但总是需要一个弹出窗口。

在“Internet选项”中的“安全”下的“可信站点”中添加以下URL解决了该问题

login.microsoftonline.com

得到了ADAL JS Git doc的提示: https//github.com/AzureAD/azure-activedirectory-library-for-js#trusted-site-settings-in-ie

当然,需要在每个用户的机器上完成。 由于它是我们的内部网站,我们已要求我们的IT部门添加策略以在所有用户的计算机上推送此特定设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM