У меня есть веб-приложение ASP.NET Core, настроенное на использование токенов-носителей JWT для аутентификации:
// Setup.cs
// ...
public void ConfigureServices(IServiceCollection services) {
services
.AddAuthentication()
.AddJwtBearer(
options =>
{
options.Authority = "https://known.authority.url";
});
}
// ...
Приложение имеет действие контроллера, с помощью которого оно может получать JWT, подписанные с использованием той же ключевой информации в теле запроса POST.
// TokenController.cs
// ...
[AllowAnonymous]
[HttpPost]
public async Task<IActionResult> ActionAsync()
{
using (var stream = new MemoryStream())
using (var reader = new StreamReader(stream))
{
await Request.Body.CopyToAsync(stream);
stream.Seek(0, SeekOrigin.Begin);
var jwt = await reader.ReadToEndAsync();
// ...
}
// ...
}
// ...
Я хотел бы проверить JWT, полученный в действии контроллера, используя те же параметры проверки и ключи подписи, настроенные в обработчике аутентификации токена-носителя. (В идеале без дублирования конфигурации действия контроллера.)
Как я могу получить доступ к свойствам JwtBearerOptions
Configuration
обработчика аутентификации в действии контроллера?
Я подтвердил, что JwtBearerHandler
является зарегистрированной службой в HttpContext.RequestServices
, но ее свойство Options
всегда равно null
.