Authentication 部署站点时,MSALJS版本1.2.1 LoginDirect不会调用HandlerRedirectCallback
我正在尝试让LoginDirect使用React应用程序。它在本地运行时可以工作,但当我部署到Azure应用程序服务时,重定向不会调用HandlerRedirectCallback(),而散列将保留在Url中 所以我一直在减少这个,直到现在我只有一个index.html,我从这里得到: 这是来自微软的ADB2C与MSAL和SPA 我更改了clientId和权限,提供了HandlerRedirectCallback和redirectUri,并将myMSALObj.loginPopup()更改为myMSALObj.loginDirect() 当我在本地运行时,它可以工作,尽管它执行了2次(新UserAgentApplication(配置)上的断点) 问题:当我将此简单页面部署到Azure应用程序服务并单击登录时,调用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
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资源中的任何内容。我无法解释这一点。我现在非常害怕,因为现在是锣神奇地停止工作,就像它神奇地开始工作一样。如果有人对这个问题有任何想法,即使它现在看起来已经解决了,我也非常感兴趣。