public JsonWebToken Create(DomainUserDto userDto, string[] userRole) { var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_jwtOptions.SecretKey)); var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var now = DateTime.UtcNow; var genericIdentity = BuildClaims(userDto, userRole); var expires = now.AddMinutes(_jwtOptions.ExpiryMinutes); var jwt = new JwtSecurityToken( _jwtOptions.Issuer, claims: genericIdentity.Claims, notBefore: now, expires: expires, audience: _jwtOptions.Audience, signingCredentials: credentials ); var token = new JwtSecurityTokenHandler().WriteToken(jwt); return(new JsonWebToken { AccessToken = token, Identity = genericIdentity.Identity }); }
public void AuthorizeUser(DomainUserDto userDto, HttpContext context) { var jwt = _jwtProvider.Create(userDto, userDto.Roles); context.User = new ClaimsPrincipal(jwt.Identity); userDto.AccessToken = jwt.AccessToken; }
public DomainUserDto ProvideLogin(string login, string password) { var user = new DomainUserDto { FirstName = "Garib", LastName = "admin", Login = login, AssignedTeam = "1" }; return(user); }
public User CreateUser(DomainUserDto domainUserDto, string password) { var hashedPassword = _passwordHasher.HashPassword(domainUserDto, password); var newUser = User.Create(null, domainUserDto.Login, domainUserDto.FirstName, domainUserDto.LastName, domainUserDto.DisplayName, null, domainUserDto.UserPricipalName, hashedPassword, domainUserDto.PhoneNumber, domainUserDto.Email, null, AccountStatusEnum.Active, null, null); Context.Users.Add(newUser); return(newUser); }
private static GenericPrincipal BuildClaims(DomainUserDto userDto, string[] userRole) { var claimsIdentity = new ClaimsIdentity("password", ClaimTypes.Name, "AuthApiPolicy"); claimsIdentity.AddClaims(new List <Claim>() { new Claim(JwtRegisteredClaimNames.Sub, userDto.Login), }); if (userRole != null) { claimsIdentity.AddClaim(new Claim(ClaimTypes.Role, string.Join(",", userRole))); } var genericPrincipal = new GenericPrincipal(claimsIdentity, userRole); return(genericPrincipal); }