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))); } }
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); }
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 (); } }
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(); } } }