public JwtTokenDto ExtractToken(ExtractTokenDto tokenInfo) { Logger.LogInformation("Try to extract token"); Validate(tokenInfo); var toReturn = new JwtTokenDto() { Token = tokenInfo.Token, IsValid = false }; if (string.IsNullOrEmpty(tokenInfo.Token)) { return(toReturn); } var handler = new JwtSecurityTokenHandler(); var validationParameters = new TokenValidationParameters { ValidIssuer = Configuration.Issuer, ValidAudience = Configuration.Audience, IssuerSigningKeys = new List <SecurityKey>() { new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.SecurityKey)) } }; ClaimsPrincipal pClaim; try { pClaim = handler.ValidateToken(tokenInfo.Token, validationParameters, out var validatedToken); } catch (Exception ex) { toReturn.InvalidationCause = ex.Message; return(toReturn); } if (!long.TryParse(GetValueFromClaim(pClaim.Claims, ClaimName.Expire), out var expire)) { return(toReturn); } toReturn.Expire = expire; if (expire < DateTimeOffset.Now.ToUnixTimeSeconds() || GetValueFromClaim(pClaim.Claims, ClaimName.TokenName) != tokenInfo.TokenName) { return(toReturn); } toReturn.Scope = GetValueFromClaim(pClaim.Claims, ClaimName.Scope); toReturn.ClientId = GetValueFromClaim(pClaim.Claims, ClaimName.ClientId); toReturn.UserName = GetValueFromClaim(pClaim.Claims, ClaimName.Name); toReturn.IsValid = true; return(toReturn); }
public JwtTokenDto ExtractToken(ExtractTokenDto tokenInfo) { return(_token); }