Доступ к веб-API из JavaScript после проверки подлинности в Azure AD B2C

1

Я разрабатываю веб-приложение.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);
        });
    })
}

Спасибо!

  • 1
    Пожалуйста, отформатируйте правильно
Теги:
asp.net-core-webapi
azure-ad-b2c
msal

1 ответ

1

Простым решением для этого сценария является то, что вы можете создать соответствующий контроллер для вызова веб-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.

  • 0
    Да, в моем веб-приложении уже есть контроллер, который вызывает веб-API. Но как я могу назвать этот код контроллера, который работает на веб-сервере, из моего JavaScript, который работает в браузере. Спасибо, Фэй.
  • 0
    Это нормально, как вы называете любой другой веб-API. Вы можете вызвать это действие управления через Jquery, указав URL-адрес определенного действия.
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню