protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing Authorization Header")); } bool isValidJwt = false; string jwtToken = ""; try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var authHeaderString = authHeader.ToString(); jwtToken = authHeaderString.Replace("Bearer ", "").Trim(); isValidJwt = _JwtService.IsValidJwt(jwtToken); } catch (Exception e) { Console.WriteLine(e); _Logger.LogCritical(e.ToString()); return(AuthenticateResult.Fail("Invalid Jwt")); } if (!isValidJwt) { return(AuthenticateResult.Fail("Invalid Jwt")); } // TODO: Add other payload items aswell to current claims var jwtPayload = _JwtService.DecodeJwt(jwtToken); var claims = new[] { new Claim(ClaimTypes.Name, jwtPayload["name"].ToString()) }; var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); return(AuthenticateResult.Success(ticket)); }