Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public JwtTokenDto ExtractToken(ExtractTokenDto tokenInfo)
 {
     return(_token);
 }