Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Comment : créer une session sécurisée

À l'exception de la liaison <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 SCT avec état dans une session sécurisée, consultez Procédure : créer un jeton de contexte de sécurité pour une session sécurisée.

Pour spécifier qu'un service utilise des sessions sécurisées à l'aide de l'une des liaisons fournies par le système

  • 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();
    
    
    
    RemarqueRemarque

    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.

Pour spécifier qu'un service utilise des sessions sécurisées à l'aide d'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 Comment : personnaliser une liaison fournie par le système.

    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();
    
    
    

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft