Я разрабатываю веб-приложение.Net, которое после аутентификации с Azure AD B2C через протокол Azure AD Connect, контроллер в моем приложении получает токен доступа через библиотеку MSAL (код С#) для доступа к поддерживаемому веб-API. Все работает отлично. Теперь из того же веб-приложения мне нужно использовать JavaScript для доступа к одному и тому же поддерживаемому веб-API. Мой вопрос заключается в том, как я могу использовать токен доступа, полученный с помощью кода на С# на стороне сервера, чтобы получить доступ к веб-интерфейсу JavaScript на стороне клиента без запроса на вход в систему.
Я использовал образец кода на GitHub, чтобы начать работу. Ниже приведен код JavaScript. Когда я запускаю его, я получаю следующую ошибку: "user_login_error:User
требуется логин "user_login_error:User
"
if (!clientApplication) {
clientApplication = new Msal.UserAgentApplication(window.config.clientID, window.config.authority, authCallback);
clientApplication.redirectUri = window.config.redirectUri;
}
function ReloadInfo(type, language, location) {
clientApplication.acquireTokenSilent(window.config.b2cScopes).then(function (accessToken) {
ReadResource(accessToken, type, language, location);
}, function (error) {
clientApplication.acquireTokenPopup(window.config.b2cScopes).then(function (accessToken) {
ReadResource(accessToken, type, language, location);
}, function (error) {
debugger
logMessage("Error acquiring the access token to call the Web api:\n" + error);
});
})
}
Спасибо!
Простым решением для этого сценария является то, что вы можете создать соответствующий контроллер для вызова веб-API.
И в JavaScript вы можете напрямую обращаться к своему веб-приложению, а не к веб-API. Поскольку у вас есть вход, JavaScript может вызвать контроллер успешно. И в этом sencario нет необходимости использовать библиотеку MSAL для JavaScript.
<script src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous"></script>
<script>
$(document).ready(function () {
$("#Location").change(function () {
$.ajax({
url: "data.html",//modify the path HTTP request you wanted
}).done(function (data) {
console.log(data);// handle the result data here
});
});
})
</script>
Вы можете здесь обратиться к полному документу jQuery.