Теперь я хочу реализовать авторизацию, для этого мне нужно использовать утверждения JWT.
Я могу использовать утверждения непосредственно из ClaimsPrincipal в HttpContext.User, но я предпочитаю использовать класс, который содержит строго типизированные утверждения JWT.
Это выглядит примерно так :
Код: Выделить всё
public class MyJwtClaims
{
public int Sub { get; set; }
public string Jti { get; set; }
public DateTimeoffset Exp { get; set; }
public DateTimeoffset Nbf { get; set; }
public DateTimeoffset Iat { get; set; }
}
Код: Выделить всё
public class ClaimsProviderService
{
private readonly IHttpContextAccessor httpContextAccessor;
private readonly Lazy claims;
public MyJwtClaims Claims => claims.Value;
public ClaimsProviderService(IHttpContextAccessor httpContextAccessor)
{
this.httpContextAccessor = httpContextAccessor;
claims = new Lazy(ParseClaims);
}
private MyJwtClaims ParseClaims()
{
// TODO: Parse claims
// Access the HttpContext from httpContextAccessor.HttpContext
// Access the ClaimsPrincipal from HttpContext.User
return new MyJwtClaims();
}
}
Код: Выделить всё
services.AddScoped();
Мой вопрос: есть ли способ добиться чего-то подобного с помощью встроенной службы?
Это не так уж много кода, но такое ощущение, что мне не хватает «готового» решения, уже реализованного в ASP.NET Core, и мне хотелось бы заранее узнать все варианты. принятие решения.
Подробнее здесь: https://stackoverflow.com/questions/791 ... p-net-core