JWT не может быть получен с помощью HttpContext.GetTokenAsync в .NET Core 2.1 - PullRequest
0 голосов
/ 13 октября 2018

Этот действительно заставляет меня чесать голову, поскольку я могу создать JWT.Я могу добавить атрибут для авторизации контроллера и посмотреть, не добавлю ли я «Авторизация» «Носитель (токен)» в заголовок, он вернет 401 неавторизованных.Однако что-то столь же простое, как получение строки токена для получения утверждений о полезной нагрузке, не работает.

Так что это прекрасно работает:

var token = Request.Headers["Authorization"];

Это не так:

var token2 = await HttpContext.GetTokenAsync(JwtBearerDefaults.AuthenticationScheme, "access_token");

Я изменил подпись, подключил IHTTPContextAccessor при запуске следующим образом:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

Я вижу, что IHttpContextAccessor имеет значения, а также ключ авторизации.Я мог бы поклясться, что раньше это легко работало в .NET Core 2.0, а сейчас - нет.Есть ли простое соединение, которое я пропускаю при запуске или программе?На данный момент я собираюсь просто получить данные из Request.Headers.Но это похоже на взлом.

1 Ответ

0 голосов
/ 13 октября 2018

Похоже, это известная проблема в ASP.NET Core 2.1 (исправлена ​​в следующей версии 2.2).Предложение по проблеме GitHub, которое я связал, состоит в том, чтобы просто извлечь значение из заголовка, как вы делаете в своем вопросе.Как только выйдет 2.2, и вы сможете обновиться, вы сможете вернуться к использованию HttpContext.GetTokenAsync.

...