Аутентификация службы приложений Azure - 302 при попытке получить /.auth/me - PullRequest
0 голосов
/ 05 июня 2018

У меня есть веб-приложениеactjs, которое размещено в службах приложений Azure с использованием аутентификации службы приложений.

Мое приложение проходит проверку подлинности должным образом, и изнутри приложения я пытаюсь получить /.auth/me, чтобыЯ могу прочитать токены доступа, чтобы использовать их для некоторых будущих запросов API, но я получаю 302 в ответ.Ответ перенаправляет на login.microsoft.com, даже если первый запрос (для загрузки приложения) уже был аутентифицирован.

const headers = {
    'Accept': 'application/json, text/plain, */*',
    'Content-Type': 'application/json',
    'credentials': 'include'
};

return (dispatch) => {
    const requestOptions = {
        method: 'GET',
        headers: headers,
    };

    return fetch("/.auth/me", requestOptions) 
        .then(parseResponseAndHandleErrors)
        .catch(error => {
            console.error(error)
        });
}

Я думаю, что в GET отсутствует cookie или заголовок, ноДокументы не дают много информации: https://docs.microsoft.com/en-us/azure/app-service/app-service-authentication-how-to#retrieve-tokens-in-app-code

Из вашего клиентского кода (такого как мобильное приложение или JavaScript в браузере) отправьте HTTP-запрос GET по адресу /.auth/me.Возвращенный JSON имеет токены, специфичные для провайдера.

Я пытался установить 'credentials': 'same-origin', но это не имело никакого значения.

1 Ответ

0 голосов
/ 05 июня 2018

Мне удалось выяснить это после более детального изучения опции 'credentials' в fetch() API.

'credentials' : 'same-origin' не должен быть включен в заголовки, а скорее как отдельная опция запроса:

const headers = {
    'Accept': 'application/json, text/plain, */*',
    'Content-Type': 'application/json'
};

return (dispatch) => {
    const requestOptions = {
        method: 'GET',
        headers: headers,
        'credentials': 'same-origin'  //credentials go here!!!
    };

    return fetch("/.auth/me", requestOptions) 
        ......
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...