Я портирую приложение ASP.NET Web API 4.6 OWIN
на ASP.NET Core 2.1
. Приложение работает на основе JWT
токена. Но токен передается через cookie вместо заголовка. Я не уверен, почему заголовки не используются, это просто ситуация, с которой мне приходится иметь дело.
Учтите, что аутентификация не выполняется с помощью cookie. Файл cookie просто используется в качестве средства передачи. В устаревшем приложении CookieOAuthBearerProvider
используется для извлечения JWT
токена из cookie. Код конфигурации выглядит следующим образом:
app.UseJwtBearerAuthentication(
new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
AllowedAudiences = new[] { audienceId },
IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
{
new SymmetricKeyIssuerSecurityTokenProvider(issuer, audienceSecret)
},
Provider = new CookieOAuthBearerProvider("token")
});
}
CookieOAuthBearerProvider
Исходный код класса выглядит следующим образом:
public class CookieOAuthBearerProvider : OAuthBearerAuthenticationProvider
{
readonly string _name;
public CookieOAuthBearerProvider(string name)
{
_name = name;
}
public override Task RequestToken(OAuthRequestTokenContext context)
{
var value = context.Request.Cookies[_name];
if (!string.IsNullOrEmpty(value))
{
context.Token = value;
}
return Task.FromResult<object>(null);
}
Это решение обсуждается здесь более подробно.
Теперь мне нужно реализовать подобное решение для ASP.NET Core. Проблема в том, что UseJwtBearerAuthentication
больше не существует в ASP.NET Core
, и я не знаю, как я могу ввести пользовательский AuthenticationProvider.
Любая помощь высоко ценится.
UPDATE:
Существует решение, которое пытается проверить JWT по собственному коду . Это не то, что мне нужно. Я просто ищу способ передачи токена, полученного из cookie, в программу чтения заголовков.