/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
namespace Apache.Qpid.Channel
{
///
/// This class is used by the AMQP Transport to set transport-level security settings for a binding
///
public sealed class AmqpTransportSecurity
{
private AmqpCredentialType credentialType;
// WCF frowns on unencrypted credentials on the wire, but AMQP is agnostic.
// For interoperability, allow SSL to be turned on/off independentaly.
private bool useSSL;
// Allow per channel credentials, but also ease the common case where
// credentials are shared and wish to be globally set in a config file.
private AmqpCredential defaultCredential;
// if true, do not look at context for ServiceModel.Description.ClientCredentials.
// ClientCredentials will be place of choice for WCF traditionalists
// to specify auth tokens to the AMQP server when Windows and SASL tokens
// look the same. At other times it makes no sense and sometimes it is
// confusing with Message-level credentials.
private bool ignoreEndpointClientCredentials;
internal AmqpTransportSecurity()
{
this.credentialType = AmqpCredentialType.Anonymous;
this.useSSL = true;
}
///
/// gets or sets the SASL mechanism for AMQP authentication between client and server.
///
public AmqpCredentialType CredentialType
{
get { return this.credentialType; }
set { this.credentialType = value; }
}
///
/// gets or sets the flag that controls the use of SSL encryption
/// over the network connection.
///
public bool UseSSL
{
get { return this.useSSL; }
set { this.useSSL = value; }
}
///
/// gets the default credential object for authentication with the AMQP server.
///
public AmqpCredential DefaultCredential
{
get { return this.defaultCredential; }
set { this.defaultCredential = value; }
}
///
/// gets or sets the endpoint ClientCredentials search parameter. If true,
/// only AmqpCredential objects are searched for in the surrounding context.
///
public bool IgnoreEndpointClientCredentials
{
get { return this.ignoreEndpointClientCredentials; }
set { this.ignoreEndpointClientCredentials = value; }
}
internal AmqpTransportSecurity Clone()
{
AmqpTransportSecurity sec = (AmqpTransportSecurity)this.MemberwiseClone();
if (this.defaultCredential != null)
{
sec.defaultCredential = this.defaultCredential.Clone();
}
return sec;
}
}
}