Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
À l’exception de la liaison de <basicHttpBinding>, les liaisons fournies par le système dans Windows Communication Foundation (WCF) utilisent automatiquement des sessions sécurisées lorsque la sécurité du message est activée.
Par défaut, les sessions sécurisées ne survivent pas à un serveur web recyclé. Lorsqu'une session sécurisée est établie, le client et le service mettent en cache la clé associée à la session sécurisée. Lorsque les messages sont échangés, seul un identificateur de la clé mise en cache est échangé. Si le serveur web est recyclé, le cache est également recyclé, de sorte que le serveur web ne peut pas récupérer la clé mise en cache pour l’identificateur. Si cela arrive, une exception est retournée au client. Les sessions sécurisées qui utilisent un jeton de contexte de sécurité avec état peuvent survivre au recyclage d'un serveur Web. Pour plus d’informations sur l’utilisation de jetons de contexte de sécurité avec état dans une session sécurisée, consultez Guide pratique pour créer un jeton de contexte de sécurité pour une session sécurisée.
Configurez un service pour utiliser une liaison fournie par le système qui prend en charge la sécurité de message.
À l’exception de la liaison <basicHttpBinding>, lorsque les liaisons fournies par le système sont configurées pour utiliser la sécurité de message, WCF utilise automatiquement des sessions sécurisées. Le tableau suivant répertorie les liaisons fournies par le système qui prennent en charge la sécurité de message et indique si la sécurité de message est le mécanisme de sécurité par défaut.
Liaison fournie par le système | Élément de configuration | Sécurité de message activée par défaut |
---|---|---|
BasicHttpBinding | <basicHttpBinding> | Non |
WSHttpBinding | <wsHttpBinding> | Oui |
WSDualHttpBinding | <wsDualHttpBinding> | Oui |
WSFederationHttpBinding | <wsFederationHttpBinding> | Oui |
NetTcpBinding | <netTcpBinding> | Non |
NetMsmqBinding | <netMsmqBinding> | Non |
L’exemple de code suivant utilise la configuration pour spécifier une liaison nommée wsHttpBinding_Calculator
qui utilise <wsHttpBinding>, la sécurité de message et les sessions sécurisées.
<bindings>
<WSHttpBinding>
<binding name = "wsHttpBinding_Calculator">
<security mode="Message">
<message clientCredentialType="Windows"/>
</security>
</binding>
</WSHttpBinding>
</bindings>
L’exemple de code suivant spécifie que <wsHttpBinding>, la sécurité de message et les sessions sécurisées sont utilisés pour sécuriser le service secureCalculator
.
WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Message;
myBinding.Security.Message.ClientCredentialType =
MessageCredentialType.Windows;
// Create the Type instances for later use and the URI for
// the base address.
Type contractType = typeof(ICalculator);
Type serviceType = typeof(Calculator);
Uri baseAddress = new
Uri("http://localhost:8036/serviceModelSamples/");
// Create the ServiceHost and add an endpoint, then start
// the service.
ServiceHost myServiceHost =
new ServiceHost(serviceType, baseAddress);
myServiceHost.AddServiceEndpoint
(contractType, myBinding, "secureCalculator");
myServiceHost.Open();
Dim myBinding As New WSHttpBinding()
myBinding.Security.Mode = SecurityMode.Message
myBinding.Security.Message.ClientCredentialType = MessageCredentialType.Windows
' Create the Type instances for later use and the URI for
' the base address.
Dim contractType As Type = GetType(ICalculator)
Dim serviceType As Type = GetType(Calculator)
Dim baseAddress As New Uri("http://localhost:8036/serviceModelSamples/")
' Create the ServiceHost and add an endpoint, then start
' the service.
Dim myServiceHost As New ServiceHost(serviceType, baseAddress)
myServiceHost.AddServiceEndpoint(contractType, myBinding, "secureCalculator")
myServiceHost.Open()
Notes
Les sessions sécurisées peuvent être désactivées pour <wsHttpBinding> en affectant à l’attribut establishSecurityContext
la valeur false
. Pour les autres liaisons fournies par le système, les sessions sécurisées peuvent être désactivées uniquement en créant une liaison personnalisée.
Créez une liaison personnalisée qui spécifie que les messages SOAP sont protégés par une session sécurisée.
Pour plus d’informations sur la création d’une liaison personnalisée, consultez Guide pratique pour personnaliser une liaison System-Provided.
L’exemple de code suivant utilise la configuration pour spécifier une liaison personnalisée à laquelle les messages font appel dans une session sécurisée.
<bindings>
<!-- configure a custom binding -->
<customBinding>
<binding name="customBinding_Calculator">
<security authenticationMode="SecureConversation" />
<secureConversationBootstrap authenticationMode="SspiNegotiated" />
<textMessageEncoding messageVersion="Soap12WSAddressing10" writeEncoding="utf-8"/>
<httpTransport/>
</binding>
</customBinding>
</bindings>
L’exemple de code suivant crée une liaison personnalisée qui utilise le mode d’authentification MutualCertificate pour démarrer une session sécurisée.
SecurityBindingElement security = SecurityBindingElement.CreateMutualCertificateBindingElement();
// Use a secure session.
security = SecurityBindingElement.CreateSecureConversationBindingElement(security, true);
// Specify whether derived keys are required.
security.SetKeyDerivation(true);
// Create the custom binding.
CustomBinding myBinding = new CustomBinding(security, new HttpTransportBindingElement());
// Create the Type instances for later use and the URI for
// the base address.
Type contractType = typeof(ICalculator);
Type serviceType = typeof(Calculator);
Uri baseAddress = new
Uri("http://localhost:8036/serviceModelSamples/");
// Create the ServiceHost and add an endpoint, then start
// the service.
ServiceHost myServiceHost =
new ServiceHost(serviceType, baseAddress);
myServiceHost.AddServiceEndpoint
(contractType, myBinding, "secureCalculator");
myServiceHost.Open();
Dim security As SecurityBindingElement = SecurityBindingElement.CreateMutualCertificateBindingElement()
' Use a secure session.
security = SecurityBindingElement.CreateSecureConversationBindingElement(security, True)
' Specify whether derived keys are required.
security.SetKeyDerivation(True)
' Create the custom binding.
Dim myBinding As New CustomBinding(security, New HttpTransportBindingElement())
' Create the Type instances for later use and the URI for
' the base address.
Dim contractType As Type = GetType(ICalculator)
Dim serviceType As Type = GetType(Calculator)
Dim baseAddress As New Uri("http://localhost:8036/serviceModelSamples/")
' Create the ServiceHost and add an endpoint, then start
' the service.
Dim myServiceHost As New ServiceHost(serviceType, baseAddress)
myServiceHost.AddServiceEndpoint(contractType, myBinding, "secureCalculator")
myServiceHost.Open()
Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Parcours d’apprentissage
Sécuriser vos applications cloud dans Azure - Training
Découvrez comment sécuriser vos applications Azure et les données associées avec le chiffrement, les certificats et une stratégie.