Esempio n. 1
0
        public override SecurityTokenAuthenticator CreateSecurityTokenAuthenticator(
            SecurityTokenRequirement tokenRequirement,
            out SecurityTokenResolver outOfBandTokenResolver)
        {
            outOfBandTokenResolver = null;
            if (tokenRequirement.TokenType == SecurityTokenTypes.UserName)
            {
                return(CreateUserNameAuthenticator(tokenRequirement));
            }
            if (tokenRequirement.TokenType == SecurityTokenTypes.X509Certificate)
            {
                return(CreateX509Authenticator(tokenRequirement));
            }
            if (tokenRequirement.TokenType == SecurityTokenTypes.Rsa)
            {
                return(new RsaSecurityTokenAuthenticator());
            }
            if (tokenRequirement.TokenType == ServiceModelSecurityTokenTypes.SecureConversation)
            {
                SecurityBindingElement binding;
                if (!tokenRequirement.TryGetProperty <SecurityBindingElement> (ReqType.SecurityBindingElementProperty, out binding))
                {
                    throw new ArgumentException("SecurityBindingElement is required in the security token requirement");
                }
                SecureConversationSecurityTokenParameters issuedParams;
                if (!tokenRequirement.TryGetProperty <SecureConversationSecurityTokenParameters> (ReqType.IssuedSecurityTokenParametersProperty, out issuedParams))
                {
                    throw new ArgumentException("IssuedSecurityTokenParameters are required in the security token requirement");
                }
                BindingContext issuerBC;
                if (!tokenRequirement.TryGetProperty <BindingContext> (ReqType.IssuerBindingContextProperty, out issuerBC))
                {
                    throw new ArgumentException("IssuerBindingContext is required in the security token requirement");
                }
                SecurityTokenVersion secVer;
                if (!tokenRequirement.TryGetProperty <SecurityTokenVersion> (ReqType.MessageSecurityVersionProperty, out secVer))
                {
                    throw new ArgumentException("MessageSecurityVersion property (of type SecurityTokenVersion) is required in the security token requirement");
                }

                // FIXME: get parameters from somewhere
                SecurityContextSecurityTokenResolver resolver =
                    new SecurityContextSecurityTokenResolver(0x1000, true);
                outOfBandTokenResolver = resolver;
                SecurityContextSecurityTokenAuthenticator sc =
                    new SecurityContextSecurityTokenAuthenticator();
                return(new SecureConversationSecurityTokenAuthenticator(tokenRequirement, sc, resolver));
            }
            throw new NotImplementedException("Not implemented token type: " + tokenRequirement.TokenType);
        }
Esempio n. 2
0
 public override SecurityTokenAuthenticator CreateSecurityTokenAuthenticator(
     SecurityTokenRequirement requirement,
     out SecurityTokenResolver outOfBandTokenResolver)
 {
     outOfBandTokenResolver = null;
     if (requirement.TokenType == SecurityTokenTypes.UserName)
     {
         return(CreateUserNameAuthenticator(requirement));
     }
     if (requirement.TokenType == SecurityTokenTypes.X509Certificate)
     {
         return(CreateX509Authenticator(requirement));
     }
     if (requirement.TokenType == SecurityTokenTypes.Rsa)
     {
         return(new RsaSecurityTokenAuthenticator());
     }
     if (requirement.TokenType == ServiceModelSecurityTokenTypes.SecureConversation)
     {
         // FIXME: get parameters from somewhere
         SecurityContextSecurityTokenResolver resolver =
             new SecurityContextSecurityTokenResolver(0x1000, true);
         outOfBandTokenResolver = resolver;
         SecurityContextSecurityTokenAuthenticator sc =
             new SecurityContextSecurityTokenAuthenticator();
         return(new SecureConversationSecurityTokenAuthenticator(requirement, sc, resolver));
     }
     if (requirement.TokenType == ServiceModelSecurityTokenTypes.AnonymousSslnego)
     {
         return(CreateSslTokenAuthenticator(requirement));
     }
     if (requirement.TokenType == ServiceModelSecurityTokenTypes.MutualSslnego)
     {
         return(CreateSslTokenAuthenticator(requirement));
     }
     if (requirement.TokenType == ServiceModelSecurityTokenTypes.Spnego)
     {
         return(CreateSpnegoTokenAuthenticator(requirement));
     }
     else
     {
         throw new NotImplementedException("Not implemented token type: " + requirement.TokenType);
     }
 }
 private SupportingTokenServiceCredentials(SupportingTokenServiceCredentials other) : base(other)
 {
     this.tokenResolver      = other.tokenResolver;
     this.tokenAuthenticator = other.tokenAuthenticator;
 }
 public SupportingTokenServiceCredentials()
 {
     this.tokenResolver      = new SupportingTokenSecurityTokenResolver();
     this.tokenAuthenticator = new SecurityContextSecurityTokenAuthenticator();
 }