예제 #1
0
        public string GetDetailedToken(string userName, string email, string name)
        {
            string token = null;

            try
            {
                DetailedJwtPayload payload = new DetailedJwtPayload(userName, email, name);
                token = JWT.Encode(payload, Encoding.ASCII.GetBytes(_jwtConfig.SecretKey), _jwtConfig.jwsAlgorithm);
            }
            catch
            {
                return(null);
            }

            return(token);
        }
예제 #2
0
        public bool IsValid(string token)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                return(false);
            }

            string[] tokenParts = token.Split('.');
            if (tokenParts.Length != 3)
            {
                return(false);
            }

            try
            {
                string             payloadJson = JWT.Decode(token, Encoding.ASCII.GetBytes(_jwtConfig.SecretKey), _jwtConfig.jwsAlgorithm);
                DetailedJwtPayload jwtPayload  = JsonConvert.DeserializeObject <DetailedJwtPayload>(payloadJson);

                // check token issuer
                if (!string.Equals(jwtPayload.iss, BasicJwtPayload.DEFAULT_ISS, StringComparison.Ordinal))
                {
                    return(false);
                }

                // check expiration time
                if (jwtPayload.IsExpired())
                {
                    return(false);
                }

                // check signature
                string validJwt = JWT.Encode(payloadJson, Encoding.ASCII.GetBytes(_jwtConfig.SecretKey), _jwtConfig.jwsAlgorithm);
                if (!string.Equals(validJwt, token, StringComparison.Ordinal))
                {
                    return(false);
                }
            }
            catch
            {
                return(false);
            }

            return(true);
        }