Partager via


Comment : définir le mode de sécurité

La sécurité Windows Communication Foundation (WCF) propose trois modes de sécurité standard disponibles sur la plupart des liaisons prédéfinies : transport, message et transport avec informations d'identification de message. Il existe également deux modes supplémentaires propres à deux liaisons particulières. Il s'agit du mode « informations d'identification de transport uniquement » disponible sur la liaison BasicHttpBinding et du mode « les deux » disponible sur la liaison NetMsmqBinding. Cette rubrique traite essentiellement des trois principaux modes de sécurité : Transport, Message et TransportWithMessageCredential.

Remarque : toutes les liaisons prédéfinies ne prennent pas nécessairement en charge chacun de ces modes. Cette rubrique, dans laquelle le mode est défini à l'aide des classes WSHttpBinding et NetTcpBinding, illustre comment définir les modes de sécurité à l'aide d'un programme ou dans la configuration.

Pour plus d'informations sur WCF la sécurité, consultez Vue d'ensemble de la sécurité, Sécurisation de services et Sécurisation des services et des clients. Pour plus d'informations sur les modes de sécurité de niveaux transport et/ou message, consultez Sécurité de transport et Sécurité des messages dans WCF.

Pour définir le mode de sécurité dans le code

  1. Créez une instance de la classe de liaison en cours d'utilisation. Pour obtenir une liste des liaisons prédéfinies, consultez Liaisons fournies par le système. Cet exemple de code crée une instance de la classe WSHttpBinding.

  2. Définissez la propriété Mode de l'objet retourné par la propriété Security.

    Vous pouvez également affecter la valeur message au mode, comme illustré dans l'exemple de code suivant.

    Vous pouvez aussi affecter la valeur transport avec informations d'identification de message au mode, comme illustré dans l'exemple de code suivant.

  3. Vous pouvez enfin définir le mode dans le constructeur de la liaison, comme illustré dans l'exemple de code suivant.

Définition de la propriété ClientCredentialType

La définition de la propriété ClientCredentialType dépend de la valeur affectée au mode de sécurité. Par exemple, si vous utilisez la classe WSHttpBinding et affectez au mode la valeur Transport vous devez affecter à la propriété ClientCredentialType de la classe HttpTransportSecurity une valeur appropriée.

Pour définir la propriété ClientCredentialType pour le mode de sécurité de niveau transport

  1. Créez une instance de la liaison.

  2. Affectez la valeur Transport à la propriété Mode.

  3. Affectez à la propriété ClientCredential une valeur appropriée. L'exemple de code suivant affecte à la propriété la valeur Windows.

Pour définir la propriété ClientCredentialType pour le mode de sécurité de niveau message

  1. Créez une instance de la liaison.

  2. Affectez la valeur Message à la propriété Mode.

  3. Affectez à la propriété ClientCredential une valeur appropriée. L'exemple de code suivant affecte à la propriété la valeur Certificate.

Pour définir le mode et la propriété ClientCredentialType dans la configuration

  1. Ajoutez un élément de liaison approprié à l'élément <bindings> du fichier de configuration. L'exemple suivant ajoute un élément <wsHttpBinding>.

  2. Ajoutez un élément <binding>, puis affectez à son attribut name une valeur appropriée.

  3. Ajoutez un élément <security>, puis affectez à l'attribut mode les valeurs Message, Transportou TransportWithMessageCredential.

  4. Si le mode a la valeur Transport, ajoutez un élément <transport> , puis affectez à l'attribut clientCredential une valeur appropriée.

    L'exemple suivant affecte au mode la valeur Transport", puis affecte à l'attribut clientCredentialType de l'élément <transport> la valeur Windows".

    <wsHttpBinding>
    <binding name="TransportSecurity">
        <security mode="Transport" />
           <transport clientCredentialType = "Windows" />
        </security>
    </binding>
    </wsHttpBinding >
    

    Vous pouvez également affecter au security mode la valeur Message", suivie d'un élément <"message">. Cet exemple affecte au clientCredentialType la valeur Certificate".

    <wsHttpBinding>
    <binding name="MessageSecurity">
        <security mode="Message" />
           <message clientCredentialType = "Certificate" />
        </security>
    </binding>
    </wsHttpBinding >
    

    L'utilisation de la valeur TransportWithMessageCredential forme un cas à part, expliqué ci-dessous.

Utilisation de TransportWithMessageCredential

Lorsque vous affectez au mode de sécurité la valeur TransportWithMessageCredential, le mécanisme chargé d'offrir la sécurité de niveau transport dépend du transport utilisé. Par exemple, le protocole HTTP utilise la sécurité Secure Sockets Layer (SSL) sur HTTP, c'est-à-dire HTTPS. Par conséquent, la définition d'une propriété ClientCredentialType pour tout objet de sécurité de transport (tel que HttpTransportSecurity) sera sans effet. En d'autres termes, vous pouvez uniquement définir la propriété ClientCredentialType de l'objet de sécurité de message (pour la liaison WSHttpBinding, il s'agit de l'objet NonDualMessageSecurityOverHttp).

Pour plus d'informations, consultez Comment : utiliser des informations d'identification de sécurité de transport et de message.

Voir aussi

Tâches

Comment : configurer un port avec un certificat SSL
Comment : utiliser des informations d'identification de sécurité de transport et de message

Concepts

Sécurité des messages dans WCF
Vue d'ensemble de la sécurité
Liaisons fournies par le système

Autres ressources

Sécurité de transport
<security> of <wsHttpBinding>
<security> of <basicHttpBinding>
<security> of <netTcpBinding>