/// <summary> /// Cria um Token de Acesso válido para o sistema, com identificação do usuário /// </summary> public static string GenerateToken(UserIdentification userIdentification) { string guid = Guid.NewGuid().ToString("N"); string userIdentStr = userIdentification.GetTokenIdentification(); ClaimsIdentity identity = new ClaimsIdentity( new GenericIdentity(userIdentStr, Constants.GENERIC_IDENTITY_TYPE), new[] { new Claim(JwtRegisteredClaimNames.Jti, guid), new Claim(JwtRegisteredClaimNames.UniqueName, userIdentStr) } ); DateTime created = DateTime.Now; DateTime expiration = created + TimeSpan.FromSeconds(TOKEN_SECONDS); JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler(); SecurityToken securityToken = handler.CreateToken(new SecurityTokenDescriptor { Issuer = ISSUER, Audience = AUDIENCE, SigningCredentials = SigningConfigurations.SigningCredentials, Subject = identity, NotBefore = created, Expires = expiration }); return(handler.WriteToken(securityToken)); }
/// <summary> /// Extrai o identificador do usuário do contexto de autenticação /// </summary> public static UserIdentification GetUserIdentification(ClaimsPrincipal user) { if (!string.IsNullOrEmpty(user.Identity.Name)) { return(new UserIdentification(user.Identity.Name)); } return(UserIdentification.NoUser()); }