Я пытаюсь подключить JWT к моему приложению ASP.NET Core Web API. Исходя из того, что я нашел в Интернете, это приемлемый способ сделать это:
// WSO2 sends the JWT in a different field than what is expected.
services.AddAuthentication().AddJwtBearer(configureOptions =>
{
configureOptions.Events = new JwtBearerEvents()
{
OnMessageReceived = context =>
{
context.Token = context.HttpContext.Request.Headers["X-JWT-Assertion"];
return Task.CompletedTask;
}
};
});
Я поместил это в мой метод ConfigureServices
в Startup.cs. Он ведет себя следующим образом:
Я ставлю точку останова на первую строку (services.AddAuthentication().AddJwtBearer
), и она срабатывает очень хорошо. (Во время запуска службы.)
Я ставлю точку останова на 3-й строке (configureOptions.Events = new JwtBearerEvents()
), и она никогда не срабатывает.
Iпоставить точку останова на 5-й строке (OnMessageReceived = context =>
), и она никогда не будет достигнута.
Я поставил точку останова на 7-й строке (context.Token = context.HttpContext.Request.Headers["X-JWT-Assertion"];
), и она никогда не будет достигнута.
По какой-то причине я не запускаю лямбда-функцию.
Что мне нужно сделать, чтобы вызвать событие OnMessageReceived
?
Примечание. Моя конечная цель - чтобы у свойства User
на контроллере были утверждения в моем JWT.