// // validates token & attaches user info // public class KratosAuthMiddleware // { // private readonly RequestDelegate _next; // public KratosAuthMiddleware(RequestDelegate next) => _next = next; // public async Task InvokeAsync(HttpContext context, KratosIntegration kratos) // { // var cookie = context.Request.Headers["Cookie"].ToString(); // var bearer = context.Request.Headers["Authorization"].ToString().Replace("Bearer ", ""); // var session = await kratos.ValidateSessionAsync(cookie, bearer); // if (session == null) // { // context.Response.StatusCode = StatusCodes.Status401Unauthorized; // await context.Response.WriteAsync("Unauthorized"); // return; // } // // attach identity to HttpContext // context.Items["user"] = session.Identity; // await _next(context); // } // }