Пример #1
0
 public Algorithm()
 {
     Validator = new AlgorithmValidator();
 }
Пример #2
0
        public void Publics()
        {
            TokenValidationParameters validationParameters = new TokenValidationParameters();
            Type type = typeof(TokenValidationParameters);

            PropertyInfo[] properties = type.GetProperties();
            if (properties.Length != 43)
            {
                Assert.True(false, "Number of properties has changed from 43 to: " + properties.Length + ", adjust tests");
            }

            TokenValidationParameters actorValidationParameters = new TokenValidationParameters();
            SecurityKey issuerSigningKey  = KeyingMaterial.DefaultX509Key_2048_Public;
            SecurityKey issuerSigningKey2 = KeyingMaterial.RsaSecurityKey_2048;

            List <SecurityKey> issuerSigningKeys =
                new List <SecurityKey>
            {
                KeyingMaterial.DefaultX509Key_2048_Public,
                KeyingMaterial.RsaSecurityKey_2048
            };

            List <SecurityKey> issuerSigningKeysDup =
                new List <SecurityKey>
            {
                KeyingMaterial.DefaultX509Key_2048_Public,
                KeyingMaterial.RsaSecurityKey_2048
            };

            string        validAudience  = "ValidAudience";
            List <string> validAudiences = new List <string> {
                validAudience
            };
            string        validIssuer  = "ValidIssuer";
            List <string> validIssuers = new List <string> {
                validIssuer
            };

            var propertyBag =
                new Dictionary <string, Object>
            {
                { "CustomKey", "CustomValue" }
            };

            TypeValidator typeValidator = (typ, token, parameters) => "ActualType";

            AlgorithmValidator algorithmValidator = ValidationDelegates.AlgorithmValidatorBuilder(false);

            var validTypes = new List <string> {
                "ValidType1", "ValidType2", "ValidType3"
            };

            var validAlgorithms = new List <string> {
                "RSA2048", "RSA1024"
            };

            TokenValidationParameters validationParametersInline = new TokenValidationParameters()
            {
                AlgorithmValidator        = algorithmValidator,
                ActorValidationParameters = actorValidationParameters,
                AudienceValidator         = ValidationDelegates.AudienceValidatorReturnsTrue,
                IssuerSigningKey          = issuerSigningKey,
                IssuerSigningKeyResolver  = (token, securityToken, keyIdentifier, tvp) => { return(new List <SecurityKey> {
                        issuerSigningKey
                    }); },
                IssuerSigningKeys         = issuerSigningKeys,
                IssuerValidator           = ValidationDelegates.IssuerValidatorEcho,
                LifetimeValidator         = ValidationDelegates.LifetimeValidatorReturnsTrue,
                PropertyBag        = propertyBag,
                SignatureValidator = ValidationDelegates.SignatureValidatorReturnsJwtTokenAsIs,
                SaveSigninToken    = true,
                TypeValidator      = typeValidator,
                ValidAlgorithms    = validAlgorithms,
                ValidateAudience   = false,
                ValidateIssuer     = false,
                ValidAudience      = validAudience,
                ValidAudiences     = validAudiences,
                ValidIssuer        = validIssuer,
                ValidIssuers       = validIssuers,
                ValidTypes         = validTypes
            };

            Assert.True(object.ReferenceEquals(actorValidationParameters, validationParametersInline.ActorValidationParameters));
            Assert.True(object.ReferenceEquals(validationParametersInline.IssuerSigningKey, issuerSigningKey));
            Assert.True(object.ReferenceEquals(validationParametersInline.PropertyBag, propertyBag));
            Assert.True(validationParametersInline.SaveSigninToken);
            Assert.False(validationParametersInline.ValidateAudience);
            Assert.False(validationParametersInline.ValidateIssuer);
            Assert.True(object.ReferenceEquals(validationParametersInline.ValidAlgorithms, validAlgorithms));
            Assert.True(object.ReferenceEquals(validationParametersInline.AlgorithmValidator, algorithmValidator));
            Assert.True(object.ReferenceEquals(validationParametersInline.TypeValidator, typeValidator));
            Assert.True(object.ReferenceEquals(validationParametersInline.ValidAudience, validAudience));
            Assert.True(object.ReferenceEquals(validationParametersInline.ValidAudiences, validAudiences));
            Assert.True(object.ReferenceEquals(validationParametersInline.ValidIssuer, validIssuer));
            Assert.True(validationParametersInline.IgnoreTrailingSlashWhenValidatingAudience);

            TokenValidationParameters validationParametersSets = new TokenValidationParameters();

            validationParametersSets.AlgorithmValidator        = algorithmValidator;
            validationParametersSets.ActorValidationParameters = actorValidationParameters;
            validationParametersSets.AudienceValidator         = ValidationDelegates.AudienceValidatorReturnsTrue;
            validationParametersSets.IssuerSigningKey          = KeyingMaterial.DefaultX509Key_2048_Public;
            validationParametersSets.IssuerSigningKeyResolver  = (token, securityToken, keyIdentifier, tvp) => { return(new List <SecurityKey> {
                    issuerSigningKey2
                }); };
            validationParametersSets.IssuerSigningKeys         = issuerSigningKeysDup;
            validationParametersSets.IssuerValidator           = ValidationDelegates.IssuerValidatorEcho;
            validationParametersSets.LifetimeValidator         = ValidationDelegates.LifetimeValidatorReturnsTrue;
            validationParametersSets.PropertyBag        = propertyBag;
            validationParametersSets.SignatureValidator = ValidationDelegates.SignatureValidatorReturnsJwtTokenAsIs;
            validationParametersSets.SaveSigninToken    = true;
            validationParametersSets.TypeValidator      = typeValidator;
            validationParametersSets.ValidateAudience   = false;
            validationParametersSets.ValidateIssuer     = false;
            validationParametersSets.ValidAlgorithms    = validAlgorithms;
            validationParametersSets.ValidAudience      = validAudience;
            validationParametersSets.ValidAudiences     = validAudiences;
            validationParametersSets.ValidIssuer        = validIssuer;
            validationParametersSets.ValidIssuers       = validIssuers;
            validationParametersSets.ValidTypes         = validTypes;

            var compareContext = new CompareContext();

            IdentityComparer.AreEqual(validationParametersInline, validationParametersSets, compareContext);
            IdentityComparer.AreEqual(validationParametersInline.Clone() as TokenValidationParameters, validationParametersInline, compareContext);

            string id = Guid.NewGuid().ToString();
            DerivedTokenValidationParameters derivedValidationParameters       = new DerivedTokenValidationParameters(id, validationParametersInline);
            DerivedTokenValidationParameters derivedValidationParametersCloned = derivedValidationParameters.Clone() as DerivedTokenValidationParameters;

            IdentityComparer.AreEqual(derivedValidationParameters, derivedValidationParametersCloned, compareContext);
            IdentityComparer.AreEqual(derivedValidationParameters.InternalString, derivedValidationParametersCloned.InternalString, compareContext);

            TestUtilities.AssertFailIfErrors(compareContext);
        }