Utiliser un comportement de service pour entrer des informations d’identification avec le Kit de développement logiciel (SDK) de l’adaptateur LOB WCF
Souvent, les consommateurs d’adaptateurs devront transmettre des informations d’identification au système métier cible. Pour fournir cette fonctionnalité, vous devez fournir un comportement de service WCF.
L’exemple de code suivant montre comment dériver un comportement de service. Il délègue les informations d’identification obtenues auprès du consommateur de l’adaptateur à l’adaptateur. L’adaptateur doit ensuite utiliser des protocoles métier pour authentifier les informations d’identification. Une fois les informations d’identification authentifiées, le service peut commencer à écouter les événements entrants à partir de l’application métier.
/// <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);
}
}
L’exemple de code suivant montre comment utiliser le comportement du service pour passer des informations d’identification à l’adaptateur.
// 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();