コード例 #1
0
        private NetTcpRelaySecurity(EndToEndSecurityMode mode, Microsoft.ServiceBus.RelayClientAuthenticationType relayClientAuthenticationType, TcpRelayTransportSecurity transportSecurity, MessageSecurityOverRelayConnection messageSecurity)
        {
            bool        flag             = EndToEndSecurityModeHelper.IsDefined(mode);
            CultureInfo invariantCulture = CultureInfo.InvariantCulture;

            object[] str = new object[] { mode.ToString() };
            Microsoft.ServiceBus.Diagnostics.DiagnosticUtility.DebugAssert(flag, string.Format(invariantCulture, "Invalid RelaySecurityMode value: {0}.", str));
            this.mode = mode;
            this.relayClientAuthenticationType = relayClientAuthenticationType;
            this.transportSecurity             = (transportSecurity == null ? new TcpRelayTransportSecurity() : transportSecurity);
            this.messageSecurity = (messageSecurity == null ? new MessageSecurityOverRelayConnection() : messageSecurity);
        }
コード例 #2
0
        internal static bool TryCreate(SecurityBindingElement wsSecurity, EndToEndSecurityMode mode, Microsoft.ServiceBus.RelayClientAuthenticationType relayClientAuthenticationType, bool isReliableSessionEnabled, TcpRelayTransportSecurity tcpTransportSecurity, out NetTcpRelaySecurity security)
        {
            security = null;
            MessageSecurityOverRelayConnection messageSecurityOverRelayConnection = null;

            if ((mode == EndToEndSecurityMode.Message || mode == EndToEndSecurityMode.TransportWithMessageCredential) && !MessageSecurityOverRelayConnection.TryCreate(wsSecurity, isReliableSessionEnabled, out messageSecurityOverRelayConnection))
            {
                return(false);
            }
            security = new NetTcpRelaySecurity(mode, relayClientAuthenticationType, tcpTransportSecurity, messageSecurityOverRelayConnection);
            if (wsSecurity == null)
            {
                return(true);
            }
            Type type = typeof(SecurityElementBase);

            object[] objArray = new object[] { security.CreateMessageSecurity(isReliableSessionEnabled, wsSecurity.MessageSecurityVersion), wsSecurity, false };
            return((bool)InvokeHelper.InvokeStaticMethod(type, "AreBindingsMatching", objArray));
        }
コード例 #3
0
        internal static bool TryCreate(SecurityBindingElement sbe, bool isReliableSession, out MessageSecurityOverRelayConnection messageSecurity)
        {
            MessageCredentialType         messageCredentialType;
            SecurityBindingElement        securityBindingElement;
            IssuedSecurityTokenParameters issuedSecurityTokenParameter;

            messageSecurity = null;
            if (sbe == null)
            {
                return(false);
            }
            if (!sbe.IncludeTimestamp)
            {
                return(false);
            }
            if (sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11 && sbe.MessageSecurityVersion != MessageSecurityVersion.WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10)
            {
                return(false);
            }
            if (sbe.SecurityHeaderLayout != SecurityHeaderLayout.Strict)
            {
                return(false);
            }
            if (!SecurityUtil.SecurityBindingElement.IsSecureConversationBinding(sbe, true, out securityBindingElement))
            {
                return(false);
            }
            if (securityBindingElement is TransportSecurityBindingElement)
            {
                if (SecurityUtil.SecurityBindingElement.IsUserNameOverTransportBinding(securityBindingElement))
                {
                    messageCredentialType = MessageCredentialType.UserName;
                }
                else if (SecurityUtil.SecurityBindingElement.IsCertificateOverTransportBinding(securityBindingElement))
                {
                    messageCredentialType = MessageCredentialType.Certificate;
                }
                else if (!SecurityUtil.SecurityBindingElement.IsSspiNegotiationOverTransportBinding(securityBindingElement, true))
                {
                    if (!SecurityUtil.SecurityBindingElement.IsIssuedTokenOverTransportBinding(securityBindingElement, out issuedSecurityTokenParameter))
                    {
                        return(false);
                    }
                    if (!SecurityUtil.IssuedSecurityTokenParameters.IsInfoCardParameters(issuedSecurityTokenParameter))
                    {
                        return(false);
                    }
                    messageCredentialType = MessageCredentialType.IssuedToken;
                }
                else
                {
                    messageCredentialType = MessageCredentialType.Windows;
                }
            }
            else if (SecurityUtil.SecurityBindingElement.IsUserNameForSslBinding(securityBindingElement, true))
            {
                messageCredentialType = MessageCredentialType.UserName;
            }
            else if (SecurityUtil.SecurityBindingElement.IsSslNegotiationBinding(securityBindingElement, true, true))
            {
                messageCredentialType = MessageCredentialType.Certificate;
            }
            else if (SecurityUtil.SecurityBindingElement.IsSspiNegotiationBinding(securityBindingElement, true))
            {
                messageCredentialType = MessageCredentialType.Windows;
            }
            else if (!SecurityUtil.SecurityBindingElement.IsIssuedTokenForSslBinding(securityBindingElement, true, out issuedSecurityTokenParameter))
            {
                if (!SecurityUtil.SecurityBindingElement.IsSslNegotiationBinding(securityBindingElement, false, true))
                {
                    return(false);
                }
                messageCredentialType = MessageCredentialType.None;
            }
            else
            {
                if (!SecurityUtil.IssuedSecurityTokenParameters.IsInfoCardParameters(issuedSecurityTokenParameter))
                {
                    return(false);
                }
                messageCredentialType = MessageCredentialType.IssuedToken;
            }
            messageSecurity = new MessageSecurityOverRelayConnection()
            {
                ClientCredentialType = messageCredentialType
            };
            if (messageCredentialType != MessageCredentialType.IssuedToken)
            {
                messageSecurity.algorithmSuite = securityBindingElement.DefaultAlgorithmSuite;
            }
            return(true);
        }