description | title | ms.custom | ms.date | ms.service | ms.reviewer | ms.suite | ms.topic |
---|---|---|---|---|---|---|---|
Learn more about: Use a service behavior to enter credentials with the WCF LOB Adapter SDK |
Use a service behavior to enter credentials with the WCF LOB Adapter SDK |
06/08/2017 |
biztalk-server |
article |
Many times, adapter consumers will be required to pass credentials to the target line of business system. To provide this functionality, you will need to provide a WCF service behavior.
The following example code demonstrates how to derive a service behavior. It delegates the credentials obtained from the consumer of the adapter to the adapter. The adapter then must use line-of-business protocols to authenticate the credentials. Once the credentials are authenticated, the service can start listening for incoming events from the line of business application.
/// <summary>
/// This class derives from a WCF service behavior. It is used in the inbound scenario
/// for the Inbound Service to pass the line-of-business credentials to the adapter using
/// WCF ClientCredentials class.
/// </summary>
public class InboundClientCredentialsServiceBehavior : ClientCredentials, IServiceBehavior
{
public InboundClientCredentialsServiceBehavior() { }
public InboundClientCredentialsServiceBehavior(InboundClientCredentialsServiceBehavior other)
: base(other)
{
}
#region IServiceBehavior Members
public void AddBindingParameters(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase, System.Collections.ObjectModel.Collection<ServiceEndpoint> endpoints, System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
bindingParameters.Add(this);
}
public void ApplyDispatchBehavior(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
}
public void Validate(ServiceDescription serviceDescription, System.ServiceModel.ServiceHostBase serviceHostBase)
{
}
#endregion
protected override ClientCredentials CloneCore()
{
return new InboundClientCredentialsServiceBehavior(this);
}
}
The following example code shows how to use the service behavior to pass credentials to the adapter.
// Create a ServiceHost for the EchoServiceImpl type
// and use the base address from app.config
ServiceHost host = new ServiceHost(typeof(EchoServiceImpl));
// Set service behavior to pass the line-of-business credentials.
InboundClientCredentialsServiceBehavior credentialsBehavior = new InboundClientCredentialsServiceBehavior();
credentialsBehavior.UserName.UserName = "username";
credentialsBehavior.UserName.Password = "****";
host.Description.Behaviors.Add(credentialsBehavior);
// Open the ServiceHost to start listening for messages
host.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
// Close the ServiceHost
host.Close();