private TokenResult GenerateAccessToken(TokenRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } IList <Claim> claims = new List <Claim>() { new Claim(UserDefaults.Claims.Name, request.UserName), new Claim(UserDefaults.Claims.NameIdentifier, request.UserId.ToString(), ClaimValueTypes.Integer64), new Claim(UserDefaults.Claims.Iat, DateTimeOffset.Now.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64), new Claim(UserDefaults.Claims.Email, request.Email), new Claim(UserDefaults.Claims.PhoneNumber, request.PhoneNumber), new Claim(UserDefaults.Claims.Id, request.UserId.ToString()), new Claim(UserDefaults.Claims.Aud, UserDefaults.TokenTypes.AccessToken) }; var expiry = DateTime.Now.AddDays(2); TokenResult response = GenerateToken(claims, expiry); return(response); }
private TokenResult GenerateToken(IList <Claim> claims, DateTime expiry) { var key = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("hpsuhdkhd6868654364545675676")); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var notBefore = DateTime.Now; TokenResult result = new TokenResult(); try { var securityToken = new JwtSecurityToken( null, null, claims, notBefore: notBefore, expires: expiry, signingCredentials: creds ); string token = _jwtSecurityTokenHandler.WriteToken(securityToken); result.Token = token; result.ExpireIn = ((DateTimeOffset)expiry).ToUnixTimeSeconds(); } catch { //TODO: Log } return(result); }
public async Task <AuthenticationResult> AuthenticateUser(User user) { if (user == null) { throw new ArgumentNullException(nameof(user)); } var tokenRequest = new TokenRequest() { Email = user.Email, UserName = user.UserName, PhoneNumber = user.PhoneNumber, UserId = user.Id, }; TokenResult accessToken = GenerateAccessToken(tokenRequest); if (accessToken.Success && !await SetAccessTokenAsync(user, accessToken.Token)) { accessToken.Token = null; } var result = new AuthenticationResult(accessToken); return(result); }
public AuthenticationResult(TokenResult accessToken) { AccessToken = accessToken; Errors = new List <string>(); }