Ativado ao configurar a autenticação e autorização (JWT Bearer, Roles e Políticas de Acesso) nas fatias verticais da camada de API do .NET 8.
52
57%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/dotnet-clean-arch/skills/net8-security-auth-manager/SKILL.mdEsta habilidade orienta a implementação segura de controle de acesso na API do .NET 8, definindo padrões de segurança com JWT (JSON Web Tokens), mapeamento de perfis (Roles) de usuários e abstração de contexto do usuário logado para evitar acoplamento da infraestrutura com o domínio.
Para garantir a identidade dos usuários que interagem com endpoints restritos (como Agentes de Qualidade):
Configuração do Token:
Utilize a autenticação baseada em JWT Bearer padrão do ASP.NET Core (Microsoft.AspNetCore.Authentication.JwtBearer).
Todos os parâmetros sensíveis de validação do token (Chave Secreta, Issuer, Audience, tempo de expiração) devem ser configurados no appsettings.json e carregados de forma segura, seguindo as diretrizes descritas em secret-management.md.
Registre os serviços de autenticação no Program.cs:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options => { ... });Endpoints Públicos vs Protegidos:
[AllowAnonymous] ou não possuir filtros de restrição.app.UseAuthorization()).Diferencie as permissões das personas do sistema para proteger operações administrativas:
Roles do Sistema:
AgenteQualidade.[Authorize(Roles = "AgenteQualidade")]Políticas Customizadas (Optional):
builder.Services.AddAuthorization(options => options.AddPolicy("ApenasFábricaNacional", policy => ...))).Nunca injete o HttpContext ou trabalhe diretamente com ClaimsPrincipal dentro dos Handlers da camada de Application ou entidades do Domain (para evitar violações das regras de Clean Architecture):
Interface de Abstração:
Defina uma interface simples na camada de Application (ex: IUserContext ou ICurrentUserService):
public interface IUserContext
{
string? UserEmail { get; }
string? Role { get; }
bool IsAuthenticated { get; }
}Implementação na API/Infra:
Implemente esta interface na camada de API ou Infra utilizando o IHttpContextAccessor nativo do ASP.NET Core para ler as claims do token decodificado:
public class UserContext : IUserContext
{
private readonly IHttpContextAccessor _httpContextAccessor;
// ... ler as claims do _httpContextAccessor.HttpContext?.User ...
}Registre o serviço na DI: builder.Services.AddScoped<IUserContext, UserContext>();.
Injete a interface IUserContext nos Command e Query Handlers da camada de Application para validar a identidade do usuário executor da ação.
admin), conforme descrito em AGENTS.md.1cbe5bc
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.