Exemple #1
0
        private static TokenState CreateInvalidToken(TokenValidationStatus status, JwtDescriptor descriptor, string?claim = null)
        {
            switch (status)
            {
            case TokenValidationStatus.SignatureKeyNotFound:
                descriptor.Header.Add(JwtHeaderParameterNames.Kid, "x");
                break;

            case TokenValidationStatus.MissingEncryptionAlgorithm:
                descriptor.Header.Add(JwtHeaderParameterNames.Enc, (object)null !);
                break;
            }

            var token  = descriptor;
            var writer = new JwtWriter();

            writer.IgnoreTokenValidation = true;
            var jwt = writer.WriteTokenString(token);

            switch (status)
            {
            case TokenValidationStatus.MalformedToken:
                jwt = "/" + jwt.Substring(0, jwt.Length - 1);
                break;

            case TokenValidationStatus.InvalidSignature:
                var parts = jwt.Split('.');
                parts[2] = new string(parts[2].Reverse().ToArray());
                jwt      = parts[0] + "." + parts[1] + "." + parts[2];
                break;

            case TokenValidationStatus.MalformedSignature:
                jwt = jwt.Substring(0, jwt.Length - 2);
                break;

            case TokenValidationStatus.MissingSignature:
                parts = jwt.Split('.');
                jwt   = parts[0] + "." + parts[1] + ".";
                break;

            default:
                break;
            }

            return(new TokenState(jwt, status));
        }
Exemple #2
0
        private static TokenState CreateInvalidToken(TokenValidationStatus status, JwtDescriptor descriptor)
        {
            switch (status)
            {
                case TokenValidationStatus.SignatureKeyNotFound:
                    descriptor.Header.Replace(new JwtProperty(HeaderParameters.KidUtf8, (string)descriptor.Header[HeaderParameters.KidUtf8].Value + "x"));
                    break;
                case TokenValidationStatus.MissingEncryptionAlgorithm:
                    descriptor.Header.Replace(new JwtProperty(HeaderParameters.EncUtf8));
                    break;
            }

            var token = descriptor;
            var writer = new JwtWriter();
            //writer.IgnoreTokenValidation = true;
            var jwt = writer.WriteTokenString(token);

            switch (status)
            {
                case TokenValidationStatus.MalformedToken:
                    jwt = "/" + jwt.Substring(0, jwt.Length - 1);
                    break;
                case TokenValidationStatus.InvalidSignature:
                    var parts = jwt.Split('.');
                    parts[2] = new string(parts[2].Reverse().ToArray());
                    jwt = parts[0] + "." + parts[1] + "." + parts[2];
                    break;
                case TokenValidationStatus.MalformedSignature:
                    jwt = jwt.Substring(0, jwt.Length - 2);
                    break;
                case TokenValidationStatus.MissingSignature:
                    parts = jwt.Split('.');
                    jwt = parts[0] + "." + parts[1] + ".";
                    break;
                default:
                    break;
            }

            return new TokenState(jwt, status);
        }