protected override async Task <AuthenticateResult> HandleAuthenticateAsync() { if (!Request.Headers.ContainsKey("Authorization")) { return(AuthenticateResult.Fail("Missing Authorization Header")); } AuthenticateResponse user = null; try { var authHeader = AuthenticationHeaderValue.Parse(Request.Headers["Authorization"]); var credentialBytes = Convert.FromBase64String(authHeader.Parameter); var credentials = Encoding.UTF8.GetString(credentialBytes).Split(':'); var request = new AuthenticateRequest() { Email = credentials[0], Password = credentials[1] }; user = _userService.Authenticate(request); } catch { return(AuthenticateResult.Fail("Invalid Authorization Header")); } if (user == null) { return(AuthenticateResult.Fail("Invalid Username or Password")); } var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Email), new Claim(ClaimTypes.Name, user.Ime), }; var usr = await _userManager.FindByIdAsync(user.Id.ToString()); var roles = await _userManager.GetRolesAsync(usr); foreach (var role in roles) { claims.Add(new Claim(ClaimTypes.Role, role)); } var identity = new ClaimsIdentity(claims, Scheme.Name); var principal = new ClaimsPrincipal(identity); var ticket = new AuthenticationTicket(principal, Scheme.Name); return(AuthenticateResult.Success(ticket)); }
public AuthenticateResponse Authenticate(AuthenticateRequest model) { var response = _userService.Authenticate(model); return(response); }