Authentication 部署站点时,MSALJS版本1.2.1 LoginDirect不会调用HandlerRedirectCallback

Authentication 部署站点时,MSALJS版本1.2.1 LoginDirect不会调用HandlerRedirectCallback,authentication,redirect,msal.js,Authentication,Redirect,Msal.js,我正在尝试让LoginDirect使用React应用程序。它在本地运行时可以工作,但当我部署到Azure应用程序服务时,重定向不会调用HandlerRedirectCallback(),而散列将保留在Url中 所以我一直在减少这个,直到现在我只有一个index.html,我从这里得到: 这是来自微软的ADB2C与MSAL和SPA 我更改了clientId和权限,提供了HandlerRedirectCallback和redirectUri,并将myMSALObj.loginPopup()更改为m

我正在尝试让LoginDirect使用React应用程序。它在本地运行时可以工作,但当我部署到Azure应用程序服务时,重定向不会调用HandlerRedirectCallback(),而散列将保留在Url中

所以我一直在减少这个,直到现在我只有一个index.html,我从这里得到:

这是来自微软的ADB2C与MSAL和SPA

我更改了clientId和权限,提供了HandlerRedirectCallback和redirectUri,并将myMSALObj.loginPopup()更改为myMSALObj.loginDirect()

当我在本地运行时,它可以工作,尽管它执行了2次(新UserAgentApplication(配置)上的断点)

问题:当我将此简单页面部署到Azure应用程序服务并单击登录时,调用

myMSALObj.loginRedirect()
确实导航到Microsoft登录,但当它重定向回我的站点并执行

new UserAgentApplication(config) 
它不会激发handleRedirectCallback(),也不会使用window.location.hash。散列将保留在Url上,处理将停止

我可以在部署的源代码中设置断点(在Chrome Dev中),并观察到在重定向回我的页面后,它肯定是在更新UserAgentApplication,但它永远不会从构造函数返回

以下是index.html中的基本代码,未显示调用Api等的部分:

  <script>
    "use strict";

    // configuration to initialize msal
    const msalConfig = {
        auth: {
            clientId: "xxxxx-xxxx-xxxx-xxxx-xxxxxxxx", //This is your client ID
            authority: "https://xxxxxxxxx.b2clogin.com/xxxxxxxxx.onmicrosoft.com/B2C_1A_signup_signin", 
            validateAuthority: false,
            redirectUri: 'https://xxxxxxxxx-react.azurewebsites.net'
        },
        cache: {
            cacheLocation: "localStorage",
            storeAuthStateInCookie: true
        }
    };

    // instantiate MSAL
    const myMSALObj = new Msal.UserAgentApplication(msalConfig);
    myMSALObj.handleRedirectCallback((err, response) => {
      if (err) {
          alert(err);
      } else {
          updateUI();
      }
      });

    const loginRequest = {
        scopes: appConfig.b2cScopes
    };

    function signIn() {
        // myMSALObj.loginPopup(loginRequest).then(function (loginResponse) {
        //     getToken(tokenRequest).then(updateUI);
        // }).catch(function (error) {
        //     logMessage(error);
        // });
        myMSALObj.loginRedirect(loginRequest)
    }

    function updateUI() {
        console.log('inside updateUI');
      const userName = myMSALObj.getAccount().name;
      console.log(myMSALObj.getAccount());
      console.log('username=' + userName);
      logMessage("User '" + userName + "' logged-in");
    }

</script>



“严格使用”;
//初始化msal的配置
常量msalConfig={
认证:{
客户ID:“xxxxx-xxxx-xxxx-xxxx-xxxx-xxxxxxxx”//这是您的客户ID
权限:“https://xxxxxxxxx.b2clogin.com/xxxxxxxxx.onmicrosoft.com/B2C_1A_signup_signin", 
验证权限:false,
重定向URI:'https://xxxxxxxxx-react.azurewebsites.net'
},
缓存:{
cacheLocation:“本地存储”,
storeAuthStateInCookie:是的
}
};
//实例化MSAL
const myMSALObj=新的Msal.UserAgentApplication(msalConfig);
myMSALObj.handleRedirectCallback((错误,响应)=>{
如果(错误){
警惕(err);
}否则{
updateUI();
}
});
常量登录请求={
作用域:appConfig.b2cScopes
};
函数签名(){
//myMSALObj.loginPopup(loginRequest).then(函数(loginResponse){
//getToken(tokenRequest).then(updateUI);
//}).catch(函数(错误){
//日志信息(错误);
// });
myMSALObj.loginDirect(loginRequest)
}
函数updateUI(){
log('insideupdateui');
const userName=myMSALObj.getAccount().name;
log(myMSALObj.getAccount());
log('username='+username);
日志消息(“用户“+”用户名“+”登录”);
}

Azure应用程序服务是运行PHP7.3的Linux。

在这两天不起作用后,我写了这个stackoverflow问题并放弃了。然后我想我会在我的安卓手机上试试,结果它成功了。所以我拿出我的笔记本电脑,它工作了。所以今天早上我在我公司的笔记本电脑上试用了它,现在它可以工作了。不知怎的,写下这个问题解决了它?我没有改变任何事情。它甚至可以在旧分支上使用完整的React/useContext/useffect/PrivateRoutes版本。我也没有更改Azure资源中的任何内容。我无法解释这一点。我现在非常害怕,因为现在是锣神奇地停止工作,就像它神奇地开始工作一样。如果有人对这个问题有任何想法,即使它现在看起来已经解决了,我也很感兴趣。在这两天不起作用后,我写了这个问题并放弃了。然后我想我会在我的安卓手机上试试,结果它成功了。所以我拿出我的笔记本电脑,它工作了。所以今天早上我在我公司的笔记本电脑上试用了它,现在它可以工作了。不知怎的,写下这个问题解决了它?我没有改变任何事情。它甚至可以在旧分支上使用完整的React/useContext/useffect/PrivateRoutes版本。我也没有更改Azure资源中的任何内容。我无法解释这一点。我现在非常害怕,因为现在是锣神奇地停止工作,就像它神奇地开始工作一样。如果有人对这个问题有任何想法,即使它现在看起来已经解决了,我也非常感兴趣。