private void ProcessIdentity(TrackingTokenViewModel trackingToken) { var identity = new ClaimsIdentity(JwtBearerDefaults.AuthenticationScheme); identity.AddClaims(trackingToken.Claims); ClaimsPrincipal principal = new ClaimsPrincipal(identity); }
private async Task ProcessTrackingToken(string userName, TrackingTokenViewModel trackingToken) { await _trackingTokenDomainService.DisableOldTokens(userName); await _trackingTokenDomainService.AddAsync(trackingToken); ProcessIdentity(trackingToken); }
internal static bool ValidateToken(string currentJWToken, TrackingTokenViewModel trackingToken, string currentUser) { bool resultado = false; if (!AreParametesOk(currentJWToken, trackingToken, currentUser)) { return(resultado); } if (!trackingToken.UserName.Equals(currentUser)) { return(resultado); } var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.ReadJwtToken(currentJWToken); if (!trackingToken.Issuer.Equals(token.Issuer)) { return(resultado); } if (!CompareDates(trackingToken.Exp, token.ValidTo)) { return(resultado); } var iatDate = GetDateValue( token.Claims.Where(c => c.Type == JwtRegisteredClaimNames.Iat).FirstOrDefault().Value); var nbfDate = GetDateValue( token.Claims.Where(c => c.Type == JwtRegisteredClaimNames.Nbf).FirstOrDefault().Value); var aud = token.Claims.Where(c => c.Type == JwtRegisteredClaimNames.Aud).FirstOrDefault().Value; var tokenAlg = token.SignatureAlgorithm; if (!CompareDates(trackingToken.Iat, iatDate)) { return(resultado); } if (!CompareDates(trackingToken.Nbf, nbfDate)) { return(resultado); } if (!trackingToken.Audience.Equals(aud)) { return(resultado); } if (!AppConfiguration.TokenAlgorithm.Equals(tokenAlg)) { return(resultado); } return(true); }
public static TrackingTokenViewModel Build(UserViewModel user) { var trackingToken = new TrackingTokenViewModel(); var current = DateTime.UtcNow; var expiration = current.AddMinutes(AppConfiguration.TokenExpiration); List <Claim> claims = GetClaims(user, current, expiration, trackingToken); var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(GetTokenDescriptor(claims, expiration)); trackingToken.Token = tokenHandler.WriteToken(token); return(trackingToken); }
private static List <Claim> GetClaims( UserViewModel user, DateTime current, DateTime expiration, TrackingTokenViewModel trackingToken) { trackingToken.Audience = AppConfiguration.TokenAudiencie; trackingToken.Exp = expiration; trackingToken.Iat = current; trackingToken.Issuer = AppConfiguration.TokenIssuer; trackingToken.Nbf = current; trackingToken.TokenId = Guid.NewGuid(); trackingToken.UserEmail = user.Email; trackingToken.UserName = user.UserName; trackingToken.UserId = user.Id; var currentString = new DateTimeOffset(current).ToUnixTimeSeconds().ToString(); var otroString = EpochTime.GetIntDate(current).ToString(); try { var claims = new List <Claim>() { new Claim(JwtRegisteredClaimNames.Jti, trackingToken.TokenId.ToString()), new Claim(ClaimTypes.NameIdentifier, trackingToken.UserName), new Claim(ClaimTypes.Name, trackingToken.UserName), new Claim(JwtRegisteredClaimNames.Email, trackingToken.UserEmail), new Claim(JwtRegisteredClaimNames.NameId, user.Id.ToString()), new Claim(JwtRegisteredClaimNames.Iat, currentString, ClaimValueTypes.String), new Claim(JwtRegisteredClaimNames.Nbf, otroString, ClaimValueTypes.String), new Claim(JwtRegisteredClaimNames.Exp, EpochTime.GetIntDate(trackingToken.Exp).ToString()), new Claim(JwtRegisteredClaimNames.Aud, trackingToken.Audience), new Claim(JwtRegisteredClaimNames.Iss, trackingToken.Issuer), new Claim(ClaimTypes.Role, user.RolesNames, ClaimValueTypes.String, trackingToken.Issuer) }; return(claims); } catch (Exception ex) { string a = ex.Message; return(null); } }
private static bool AreParametesOk(string currentJWToken, TrackingTokenViewModel trackingToken, string currentUser) { return(!string.IsNullOrWhiteSpace(currentJWToken) && !string.IsNullOrWhiteSpace(currentUser) && trackingToken != null); }