WCF - comment créer par programmation personnalisée de liaison avec le codage binaire sur HTTP(S)
Je voudrais convertir mon HTTP/HTTPS WCF paramètres de liaison à utiliser binaire de codage de message et j'ai besoin de faire dans le code - pas de configuration XML. Autant que je sache, il est nécessaire de créer CustomBinding objet et régler correctement les BindingElements, mais je ne suis pas en mesure de comprendre à quels éléments devrais-je utiliser dans mon scénario.
Principaux points dans ma configuration WCF sont:
- utiliser le protocole HTTP ou HTTPS transport en fonction de la configuration (dans l'app.config)
- utiliser nom d'utilisateur message de sécurité
- todo: ajouter un codage binaire à la place de texte par défaut
Mon code actuel pour le réglage de la liaison (travail, mais sans le codage binaire):
var isHttps = Settings.Default.wcfServiceBaseAddress.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase);
var binding = new WSHttpBinding(isHttps ? SecurityMode.TransportWithMessageCredential : SecurityMode.Message);
binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName;
J'ai essayé ce code mais il ne fonctionne pas - je ne sais pas comment faire pour activer la fonction de message de sécurité de l'élément identifiant de message de sécurité:
var custBinding = new CustomBinding();
custBinding.Elements.Add(new BinaryMessageEncodingBindingElement());
//Transport Security (Not Required)
if (isHttps)
{
custBinding.Elements.Add(SecurityBindingElement.CreateUserNameForSslBindingElement());
}
//Transport (Required)
custBinding.Elements.Add(isHttps ?
new HttpsTransportBindingElement() :
new HttpTransportBindingElement());
Quelqu'un sait comment configurer cela? J'ai essayé de chercher pour le même problème/solution, mais n'a pas réussi...
OriginalL'auteur Buthrakaur | 2010-02-10
Vous devez vous connecter pour publier un commentaire.
J'ai presque oublié cette question, mais voici mon custom de liaison de la classe, qui travaille avec les binaires de liaison sur HTTP avec nom d'utilisateur+mot de passe de validation et permet également d'activer la compression GZip sur...
OriginalL'auteur Buthrakaur
Essayer
SecurityBindingElement.CreateUserNameOverTransportBindingElement()
à la place:Pour des raisons de sécurité, WCF permet seulement de nom d'utilisateur/mot de passe combinaisons d'être envoyé lorsque la connexion est cryptée - à-dire lorsque vous utilisez Https transport. Cela signifie que si vous n'utilisez pas le protocole Https, vous ne pouvez pas sécuriser vos messages dans ce sens. Vous pourriez avoir besoin de réévaluer vos besoins.
OriginalL'auteur Samuel Jack
La SecurityBindingElement a un AllowInsecureTransport de la propriété. Si vous définissez ce paramètre à true, vous pouvez utiliser le HttpTransportBindingElement avec message nom d'utilisateur et le mot de passe de sécurité.
OriginalL'auteur Aaron Fischer