Пример #1
0
        private SecurityTokenProvider CreateUncorrelatedDuplexSecurityTokenProvider(InitiatorServiceModelSecurityTokenRequirement initiatorRequirement)
        {
            string tokenType             = initiatorRequirement.TokenType;
            SecurityTokenProvider result = null;

            if (tokenType == SecurityTokenTypes.X509Certificate)
            {
                SecurityKeyUsage keyUsage = initiatorRequirement.KeyUsage;
                if (keyUsage == SecurityKeyUsage.Exchange)
                {
                    if (ServiceCredentials.ClientCertificate.Certificate == null)
                    {
                        throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.ClientCertificateNotProvidedOnServiceCredentials));
                    }

                    result = new X509SecurityTokenProvider(ServiceCredentials.ClientCertificate.Certificate);
                }
                else
                {
                    // this is a request for the server's own cert for signing
                    result = CreateServerX509TokenProvider();
                }
            }
            return(result);
        }
 internal static void Validate(SecurityKeyUsage value)
 {
     if (!IsDefined(value))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnumArgumentException("value", (int)value, typeof(SecurityKeyUsage)));
     }
 }
 internal static void Validate(SecurityKeyUsage value)
 {
     if (!IsDefined(value))
     {
         throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidEnumArgumentException("value", (int) value, typeof(SecurityKeyUsage)));
     }
 }
Пример #4
0
 internal static void Validate(SecurityKeyUsage value)
 {
     if (!IsDefined(value))
     {
         throw Fx.Exception.AsError(new InvalidEnumArgumentException("value", (int)value,
                                                                     typeof(SecurityKeyUsage)));
     }
 }
 internal static bool IsDefined(SecurityKeyUsage value)
 {
     if (value != SecurityKeyUsage.Exchange)
     {
         return(value == SecurityKeyUsage.Signature);
     }
     return(true);
 }
Пример #6
0
 internal static void Validate(SecurityKeyUsage value)
 {
     if (!IsDefined(value))
     {
         throw Fx.Exception.AsError(new InvalidEnumArgumentException("value", (int)value,
             typeof(SecurityKeyUsage)));
     }
 }
 internal static bool IsDefined(SecurityKeyUsage value)
 {
     if (value != SecurityKeyUsage.Exchange)
     {
         return (value == SecurityKeyUsage.Signature);
     }
     return true;
 }
		public SecurityToken GetToken (SecurityTokenRequirement requirement, SecurityTokenParameters targetParams, SecurityKeyUsage usage)
		{
			requirement.KeyUsage = usage;
			requirement.Properties [ReqType.SecurityBindingElementProperty] = Element;
			requirement.Properties [ReqType.MessageSecurityVersionProperty] =
				Element.MessageSecurityVersion.SecurityTokenVersion;

			InitializeRequirement (targetParams, requirement);

			SecurityTokenProvider provider =
				CreateTokenProvider (requirement);
			ICommunicationObject obj = provider as ICommunicationObject;
			try {
				if (obj != null)
					obj.Open (Timeouts.OpenTimeout);
				return provider.GetToken (Timeouts.SendTimeout);
			} finally {
				if (obj != null && obj.State == CommunicationState.Opened)
					obj.Close ();
			}
		}
Пример #9
0
        public SecurityToken GetToken(SecurityTokenRequirement requirement, SecurityTokenParameters targetParams, SecurityKeyUsage usage)
        {
            requirement.KeyUsage = usage;
            requirement.Properties [ReqType.SecurityBindingElementProperty] = Element;
            requirement.Properties [ReqType.MessageSecurityVersionProperty] =
                Element.MessageSecurityVersion.SecurityTokenVersion;

            InitializeRequirement(targetParams, requirement);

            SecurityTokenProvider provider =
                CreateTokenProvider(requirement);
            ICommunicationObject obj = provider as ICommunicationObject;

            try {
                if (obj != null)
                {
                    obj.Open(Timeouts.OpenTimeout);
                }
                return(provider.GetToken(Timeouts.SendTimeout));
            } finally {
                if (obj != null && obj.State == CommunicationState.Opened)
                {
                    obj.Close();
                }
            }
        }