protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing authorization header!!")); } var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var credentialsBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialsBytes).Split(":"); if (credentials.Length != 2) { return(AuthenticateResult.Fail("Fail authorization header value")); } bool validation = _service.validation(credentials[0], credentials[1]); if (validation == false) { return(AuthenticateResult.Fail("Incorrect username or password.")); } var claims = new[] { new Claim(ClaimTypes.NameIdentifier, "1"), new Claim(ClaimTypes.Name, credentials[0]), new Claim(ClaimTypes.Role, "admin"), new Claim(ClaimTypes.Role, "employee") }; var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); return(AuthenticateResult.Success(ticket)); }