Теперь я хочу реализовать авторизацию, для этого мне нужно использовать утверждения JWT.
Я могу использовать утверждения непосредственно из ClaimsPrincipal code> в 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, и я хотел бы знать все варианты, прежде чем принимать решение.
Подробнее здесь: https://stackoverflow.com/questions/791 ... p-net-core