Partager via


Création d’un contexte de sécurité Schannel

Pour établir un contexte de sécurité qui protégera les communications entre un client et un serveur, les deux doivent participer au processus d’échange d’informations suivant :

Client

  1. Le client appelle la fonction InitializeSecurityContext (Général).
  2. Schannel commence à créer un contexte de sécurité en fonction des règles du protocole de sécurité sélectionné. Le code de retour de la fonction indique si le client doit appeler à nouveau la fonction. InitializeSecurityContext (Général) peut retourner un jeton qui représente le contexte.
  3. Si un jeton a été retourné, le client l’envoie au serveur.
  4. Lorsque InitializeSecurityContext (Général) retourne SEC_E_OK, le client a terminé. Si la fonction retourne SEC_I_CONTINUE_NEEDED, le client doit attendre que le serveur lui envoie un jeton. Lorsque le client a le jeton du serveur, il doit appeler à nouveau la fonctionInitializeSecurityContext (Général). (Revenez à l’étape 2.)

Serveur

  1. Le serveur attend qu’un client envoie un message qui contient un jeton de sécurité. Le serveur transmet le jeton reçu du client à la fonction AcceptSecurityContext (Général).
  2. Schannel s’appuie sur le contexte de sécurité partiel représenté par le jeton. Schannel retourne un jeton au serveur et un code de retour indiquant si le serveur doit appeler à nouveau la fonction.
  3. Si un jeton a été retourné, le serveur l’envoie au client.
  4. Lorsque AcceptSecurityContext (Général) retourne SEC_E_OK, le serveur est terminé. Si la fonction retourne SEC_I_CONTINUE_NEEDED, le serveur doit attendre que le client lui envoie un jeton. Lorsque le serveur a le jeton du client, il doit appeler à nouveau la fonction AcceptSecurityContext (Général). (Revenez à l’étape 2.)

Si l’une des fonctions retourne une valeur autre que SEC_E_OK, SEC_I_CONTINUE_NEEDED ou SEC_E_INCOMPLETE_MESSAGE (voir le paragraphe suivant), une erreur s’est produite. Le client et le serveur doivent appeler la fonction DeleteSecurityContext pour supprimer le contexte de sécurité partiellement établi.

Un cas particulier qui peut modifier le traitement du client et du serveur est lorsque trop peu ou trop d’informations sont envoyées au client ou au serveur à partir de l’autre partie. En cas de trop peu d’informations, les deux fonctions retournent SEC_E_INCOMPLETE_MESSAGE. Pour plus d’informations sur la reconnaissance et la gestion des informations insuffisantes ou excédentaires, consultez Mémoires tampons supplémentaires retournées par Schannel.

Exécution de l’authentification à l’aide de Schannel

Certificats de mappage

Validation manuelle des informations d’identification Schannel