Initialisation du contexte client
Pour établir une connexion sécurisée, le client acquiert un handle d’informations d’identification sortantes avant d’envoyer une demande d’authentification au serveur. Le serveur crée un contexte de sécurité pour le client à partir de la demande d’authentification. Deux fonctions SSPI côté client sont impliquées dans la configuration de l’authentification :
- AcquireCredentialsHandle obtient une référence aux informations d’identificationd’ouverture de session précédemment obtenues.
- InitializeSecurityContext (général) crée les jetons de sécurité de la demande d’authentification initiale.
vous pouvez voir le Code de ce processus dans la fonction GenClientContext de l' utilisation de SSPI avec un Client Windows sockets.
Si un programme client doit utiliser des informations d’identification en plus de ses propres informations d’identification d’ouverture de session, telles qu’un nom d’utilisateur, un nom de domaine et un mot de passe différents, il les fournit dans l’appel AcquireCredentialsHandle avec une structure d’identité de l' _ _ authentification _ winnt , en spécifiant les informations d’identification supplémentaires. Pour plus d’informations sur les fonctions d’informations d’identification, consultez gestion des informations d’identification.
Notes
Le membre Flags de la structure de l' _ _ _ identité d’authentification Winnt de la sec peut être défini sur sec _ winnt _ _ Identity _ ANSI lorsque les chaînes de la structure sont ASCI ou OEM. Les chaînes ANSI peuvent être utilisées avec le membre Flags de la seconde structure d' _ _ _ identité d’authentification Winnt avec la valeur s _ winnt _ _ Identity _ Unicode Unicode si elles sont d’abord converties en Unicode à l’aide de la fonction MultiByteToWideChar .
Pour initier la première branche de l’authentification, le client appelle InitializeSecurityContext (General) pour obtenir un jeton de sécurité initial à envoyer dans un message de demande de connexion au serveur.
Le client utilise les informations de jeton de sécurité reçues dans le descripteur de mémoire tampon de sortie pour générer un message à envoyer au serveur. La construction du message, en termes de positionnement de plusieurs mémoires tampons, et ainsi de suite, fait partie du protocole d’application et doit être comprise par les deux parties.
Le client vérifie l’état de retour de InitializeSecurityContext (général) pour déterminer si l’authentification se termine en un seul appel. Un état de retour de SEC _ je _ continue _ requis indique que le protocole de sécurité nécessite plusieurs messages d’authentification. Pour plus d’informations sur les fonctions de contexte, consultez gestion du contexte.