using System.IdentityModel.Tokens.Jwt; using System.Text; using Microsoft.IdentityModel.Tokens; namespace Distribution.Middleware; public class AuthMiddleware(RequestDelegate next, IConfiguration config) { public async Task InvokeAsync(HttpContext context) { var token = context.Request.Headers.Authorization .ToString() .Replace("Bearer ", "", StringComparison.OrdinalIgnoreCase) .Trim(); if (!string.IsNullOrEmpty(token)) { var key = config["Jwt:Key"]; if (!string.IsNullOrEmpty(key)) { try { var principal = new JwtSecurityTokenHandler().ValidateToken(token, new TokenValidationParameters { ValidateIssuerSigningKey = true, IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key)), ValidateIssuer = true, ValidIssuer = config["Jwt:Issuer"], ValidateAudience = true, ValidAudience = config["Jwt:Audience"], ValidateLifetime = true, ClockSkew = TimeSpan.FromMinutes(1) }, out _); context.User = principal; } catch { } } } await next(context); } }