Маркер доступа с областями действия API Azure AD и областями графика не проходит проверку подлинности в Microsoft Graph

У меня есть приложение UWP, которое использует Microsoft Graph для аутентификации. Я определил области в приложении UWP следующим образом

private readonly string[] _scopes = {"api://*******-***-****-***-********/access_as_user", "user.read"};

Он успешно получает токен, успешно входит в систему и успешно проходит аутентификацию с помощью моего API. Проблема в том, что когда я пытаюсь использовать тот же токен для получения информации о пользователе из Microsoft Graph (используя запрос GET на https://graph.microsoft.com/v1.0/me/), я получаю сообщение об ошибке,

{
    "error": {
        "code": "InvalidAuthenticationToken",
        "message": "Access token validation failure. Invalid audience.",
        "innerError": {
            "date": "2020-08-27T08:07:04",
            "request-id": "c9a729a0-d566-428a-a715-8d179af1fa8a"
        }
    }
}

Нет ли возможности использовать один и тот же токен для моей серверной части и для Microsoft Graph?




Ответы (1)


Нет. Токен доступа действителен только для одного API в соответствии с его аудиторией (утверждение aud).

Вам необходимо приобрести два токена: один с областями действия API, а другой - с областями действия API Graph.

person juunas    schedule 27.08.2020
comment
Если я сделаю это, пользователь войдет в систему дважды. - person Josh; 31.08.2020
comment
Хм, не должно быть. Приложение должно иметь возможность использовать токен обновления для получения второго токена. - person juunas; 31.08.2020