Ошибка носителя - invalid_token - ключ подписи не найден - PullRequest
1 голос
/ 25 октября 2019

У меня есть приложение Angular 7, взаимодействующее с бэкэндом API .Net Core 2.2. Это связано с Azure Active Directory.

Со стороны Angular 7 он проходит аутентификацию должным образом с помощью AAD, и я получаю верный JWT, проверенный на jwt.io .

На стороне .Net Core API я создал простой тестовый API с [Authorize].

Когда я вызываю этот метод из Angular, после добавления токена Bearer я получаю (как виднов инструментах отладки Chrome, вкладка «Сеть», «Заголовки»):

WWW-Authenticate: Ошибка носителя = "invalid_token", error_description = "Ключ подписи не найден"

С HTTP / 1.1 401 Unauthorized .

Упрощенный API теста:

    [Route("Secure")]
    [Authorize]
    public IActionResult Secure() => Ok("Secure works");

Код вызова Angular также прост, насколько я могу его получить:

    let params : any = {
        responseType: 'text',
        headers: new HttpHeaders({
            "Authorization": "Bearer " + token,
            "Content-Type": "application/json"
        })
    }

    this.http
        .get("https://localhost:5001/api/azureauth/secure", params)
        .subscribe(
            data => { },
            error => { console.error(error); }
        );

Если я удаляю атрибут [Authorize] и просто называю его как стандартный GET запрос от Angular , он отлично работает .

Мой запуск. cs содержит:

        services
            .AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureADBearer(options => this.Configuration.Bind("AzureAd", options));

Все параметры установлены правильно (например, ClientId, TenantId и т. д.) вappsettings.json и options здесь заполняются, как и ожидалось.

1 Ответ

0 голосов
/ 25 октября 2019

My Core API использует конфигурацию различных служб (и это работает:)):

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                Configuration.Bind("JwtBearer", options);

Вы уверены, что передаете токен доступа, а не id_token? Является ли Aud Calim в токене точно таким же, как клиент, с которым настроен ваш API? Возможно, вы захотите добавить некоторые события в ваши параметры, чтобы увидеть, что вы получаете и где проверка не проходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...