SspiAcceptSecurityContextAsync, fonction (sspi.h)
La fonction SspiAcceptSecurityContextAsync permet au composant serveur d’une application de transport d’établir de façon asynchrone un contexte de sécurité entre le serveur et un client distant. Le client distant appelle la fonction SspiInitializeSecurityContextAsync pour démarrer de façon asynchrone le processus d’établissement d’un contexte de sécurité.
Note
Cette fonction sert d’équivalent asynchrone à la fonction AcceptSecurityContext.
Syntaxe
SECURITY_STATUS SspiAcceptSecurityContextAsync(
SspiAsyncContext *AsyncContext,
PCredHandle phCredential,
PCtxtHandle phContext,
PSecBufferDesc pInput,
unsigned long fContextReq,
unsigned long TargetDataRep,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
Paramètres
AsyncContext
Contexte d’appel asynchrone.
phCredential
Handle pour les informations d’identification du serveur. Pour récupérer ce handle, le serveur appelle la fonction SspiAcquireCredentialsHandleAsync avec le jeu d’indicateurs SECPKG_CRED_INBOUND ou SECPKG_CRED_BOTH.
phContext
Pointeur vers une structure CtxtHandle. Lors du premier appel à SspiAcceptSecurityContextAsync, ce pointeur est NULL. Lors des appels suivants, phContext spécifie le contexte partiellement formé retourné dans le paramètre phNewContext par le premier appel.
pInput
Pointeur vers une structure SecBufferDesc
La première mémoire tampon doit être de type SECBUFFER_TOKEN et contenir le jeton de sécurité reçu du client. La deuxième mémoire tampon doit être de type SECBUFFER_EMPTY.
fContextReq
Indicateurs de bits qui spécifient les attributs requis par le serveur pour établir le contexte.
Consultez AcceptSecurityContext : fContextReq pour obtenir la liste complète des valeurs de paramètre.
TargetDataRep
Représentation des données, telle que l’ordre d’octets, sur la cible. Ce paramètre peut être SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.
phNewContext
Pointeur vers une structure CtxtHandle. Lors du premier appel à SspiAcceptSecurityContextAsync, ce pointeur reçoit le nouveau handle de contexte. Lors des appels suivants, phNewContext peut être identique au handle spécifié dans le paramètre phContext.
pOutput
Pointeur vers une structure SecBufferDesc qui contient le descripteur de mémoire tampon de sortie. Cette mémoire tampon est envoyée au client pour une entrée dans des appels supplémentaires à SspiInitializeSecurityContextAsync. Une mémoire tampon de sortie peut être générée même si la fonction retourne SEC_E_OK. Toute mémoire tampon générée doit être renvoyée à l’application cliente.
En sortie, cette mémoire tampon reçoit un jeton pour le contexte de sécurité asynchrone. Le jeton doit être envoyé au client. La fonction peut également retourner une mémoire tampon de type SECBUFFER_EXTRA.
pfContextAttr
Pointeur vers un ensemble d’indicateurs de bits qui indiquent les attributs du contexte établi.
Consultez AcceptSecurityContext : pfContextAttr pour obtenir des descriptions des attributs.
ptsExpiry
Pointeur vers une structure TimeStamp qui reçoit l’heure d’expiration du contexte.
Consultez AcceptSecurityContext : ptsExpiry.
Valeur de retour
Retourne SEC_E_OK si la requête asynchrone pour établir un contexte de sécurité a été correctement mise en file d’attente pour l’exécution. Sinon, elle retourne l’erreur générée lors de sa tentative de mise en file d’attente. Pour récupérer l’état de l’opération, utilisez SspiGetAsyncCallStatus.
Si le contexte de sécurité reçu du client a été accepté, SspiGetAsyncCallStatus retourne SEC_E_OK ou l’un des codes SSPI dans le tableau ci-dessous. Sinon, il peut retourner SEC_I_ASYNC_CALL_PENDING si l’appel est toujours en cours, ou l’un des codes d’erreur irrécupérables suivants dans le deuxième tableau ci-dessous.
Retourner le code |
Description |
---|---|
SEC_E_INCOMPLETE_MESSAGE 0x80090318L |
La fonction a réussi. Les données de la mémoire tampon d’entrée sont incomplètes. L’application doit lire des données supplémentaires à partir du client et appeler À nouveau SspiAcceptSecurityContextAsync. |
SEC_I_COMPLETE_AND_CONTINUE 0x00090314L |
La fonction a réussi. Le serveur doit appeler CompleteAuthToken et transmettre le jeton de sortie au client. Le serveur doit ensuite attendre un jeton de retour du client avant d’effectuer un autre appel à SspiAcceptSecurityContextAsync. |
SEC_I_COMPLETE_NEEDED 0x00090313L |
La fonction a réussi. Le serveur doit terminer la génération du message à partir du client avant d’appeler CompleteAuthToken. |
SEC_I_CONTINUE_NEEDED 0x00090312L |
La fonction a réussi. Le serveur doit envoyer le jeton de sortie au client et attendre un jeton retourné. Le jeton retourné doit être transmis dans pInput pour un autre appel à SspiAcceptSecurityContextAsync. |
Codes d’erreur irrécupérables
Remarques
La fonction
L’appelant est chargé de déterminer si les attributs de contexte finaux sont suffisants. Par exemple, si la confidentialité (chiffrement) a été demandée mais n’a pas pu être établie, certaines applications peuvent choisir d’arrêter la connexion immédiatement. Si le contexte de sécurité ne peut pas être établi, le serveur doit libérer le contexte partiellement créé en appelant la fonction
Pour obtenir des remarques supplémentaires, consultez AcceptSecurityContext.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 10, version 1607 [pilotes en mode noyau uniquement] |
serveur minimum pris en charge | Windows Server 2016 [pilotes en mode noyau uniquement] |
d’en-tête | sspi.h |
Voir aussi
conditions requises pour le contexte
SspiAcquireCredentialsHandleAsync