Я реализую поток неявных грантов OAuth2 для очень простого веб-приложения, которое я хочу защитить. Я использую MSAL, чтобы сделать это. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я пробую URL-адрес из браузера, он перенаправляет меня на страницу входа в организацию, а затем перенаправляет на URI перенаправления.
Однако, когда я звоню из приложения, я получаю сообщение об ошибке CORS. Трассировка стека выглядит так:
Access to XMLHttpRequest at '**********/oauth2/authorize/.well-known/openid-configuration' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
index.js:99 ClientAuthError: Error: could not resolve endpoints. Please check network and try again. Details: function toString() { [native code] }
at ClientAuthError.AuthError [as constructor] (webpack:///./node_modules/msal/lib-es6/error/AuthError.js?:26:28)
at new ClientAuthError (webpack:///./node_modules/msal/lib-es6/error/ClientAuthError.js?:111:28)
at Function.ClientAuthError.createEndpointResolutionError (webpack:///./node_modules/msal/lib-es6/error/ClientAuthError.js?:121:16)
at eval (webpack:///./node_modules/msal/lib-es6/UserAgentApplication.js?:455:125)
XHRClient.js:43 GET ***********/authorize/.well-known/openid-configuration net::
Мой код выглядит следующим образом
import $ from "jquery";
import 'bootstrap';
import * as Msal from "msal";
window.addEventListener("load", (event) => {
const msalConfig = {
auth: {
clientId: “***************”,
authority: "https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize"
},
cache: {
cacheLocation: "sessionStorage", // This configures where your cache will be stored
storeAuthStateInCookie: false, // Set this to "true" if you are having issues on IE11 or Edge
forceRefresh: false // Set this to "true" to skip a cached token and go to the server to get a new
}
};
const loginRequest = {
scopes: ["openid"],
};
console.log(new Msal.UserAgentApplication(msalConfig));
const myMSALObj = new Msal.UserAgentApplication(msalConfig);
myMSALObj.handleRedirectCallback(authRedirectCallBack);
function authRedirectCallBack(error, response) {
if (error) {
console.log(error);
} else {
console.log(response);
}
}
myMSALObj.loginPopup(loginRequest)
.then(loginResponse => {
console.log('id_token acquired at: ' + new Date().toString());
if (myMSALObj.getAccount()) {
console.log(myMSALObj.getAccount());
// showWelcomeMessage(myMSALObj.getAccount());
}
}).catch(function (error) {
console.log(error);
});
}