SaslAcceptSecurityContext, fonction (sspi.h)

La fonction SaslAcceptSecurityContext encapsule un appel standard à l’interface du fournisseur de support de sécuritéAcceptSecurityContext (Général) et inclut la création de cookies serveur SASL.

Syntaxe

SECURITY_STATUS SEC_ENTRY SaslAcceptSecurityContext(
  [in]            PCredHandle    phCredential,
  [in, optional]  PCtxtHandle    phContext,
  [in]            PSecBufferDesc pInput,
  [in]            unsigned long  fContextReq,
  [in]            unsigned long  TargetDataRep,
  [out]           PCtxtHandle    phNewContext,
  [in, out]       PSecBufferDesc pOutput,
  [out]           unsigned long  *pfContextAttr,
  [out, optional] PTimeStamp     ptsExpiry
);

Paramètres

[in] phCredential

Handle des informations d’identification du serveur. Le serveur appelle la fonction AcquireCredentialsHandle avec l’indicateur INBOUND défini pour récupérer ce handle.

[in, optional] phContext

Pointeur vers une structure CtxtHandle. Lors du premier appel à AcceptSecurityContext (Général), ce pointeur est NULL. Lors des appels suivants, phContext est le handle du contexte partiellement formé retourné dans le paramètre phNewContext par le premier appel.

[in] pInput

Pointeur vers une structure SecBufferDesc générée par un appel client à la fonction InitializeSecurityContext (Général) qui contient le descripteur de mémoire tampon d’entrée.

SASL nécessite une mémoire tampon unique de type SECBUFFER_TOKEN. La mémoire tampon est vide pour le premier appel à la fonction AcceptSecurityContext (Général) et contient la réponse de défi reçue du client pour le deuxième appel.

[in] fContextReq

Indicateurs de bits qui spécifient les attributs requis par le serveur pour établir le contexte. Les indicateurs de bits peuvent être combinés à l’aide d’opérations deOU au niveau du bit. Le tableau suivant présente les valeurs possibles.

Valeur Signification
ASC_REQ_CONFIDENTIALITY
Chiffrer et déchiffrer les messages.

Valide uniquement avec le SSP Digest pour SASL.

ASC_REQ_HTTP
Utilisez Digest pour HTTP. Omettez cet indicateur pour utiliser Digest comme mécanisme SASL.

[in] TargetDataRep

Indique la représentation des données, telle que l’ordre d’octets, sur la cible. Cette valeur peut être SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.

[out] phNewContext

Pointeur vers une structure CtxtHandle. Lors du premier appel à AcceptSecurityContext (Général), 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.

[in, out] 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 à InitializeSecurityContext (Général). 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.

[out] pfContextAttr

Pointeur vers une variable qui reçoit un ensemble d’indicateurs de bits indiquant les attributs du contexte établi. Pour obtenir une description des différents attributs, consultez Conditions requises pour le contexte. Les indicateurs utilisés pour ce paramètre sont préfixés par ASC_RET, tels que ASC_RET_DELEGATE.

Ne vérifiez pas les attributs liés à la sécurité tant que l’appel de fonction final ne retourne pas correctement. Les indicateurs d’attributs non liés à la sécurité, tels que l’indicateur de ASC_RET_ALLOCATED_MEMORY, peuvent être vérifiés avant le retour final.

[out, optional] ptsExpiry

Pointeur vers une structure TimeStamp qui reçoit l’heure d’expiration du contexte. Il est recommandé que le package de sécurité retourne toujours cette valeur dans l’heure locale.

Remarque Jusqu’au dernier appel du processus d’authentification, l’heure d’expiration du contexte peut être incorrecte, car plus d’informations seront fournies pendant les phases ultérieures de la négociation. Par conséquent, ptsTimeStamp doit être NULL jusqu’au dernier appel à la fonction.
 

Valeur de retour

Si l’appel est terminé, cette fonction retourne SEC_E_OK. Le tableau suivant présente certaines valeurs de retour d’échec possibles.

Retourner le code Description
SEC_E_ALGORITHM_MISMATCH
Le traitement de l’authentification n’est pas autorisé.
SEC_E_INSUFFICIENT_MEMORY
La mémoire insuffisante est disponible pour terminer la requête.
SEC_E_INVALID_TOKEN
Aucune mémoire tampon de jeton n’est située dans le paramètre pOutput , ou le message n’a pas pu être déchiffré.

Remarques

L’appel final de la fonction AcceptSecurityContext (Général) qui retourne SEC_E_OK est identifiée. Si un jeton de retour est généré, le traitement SASL est suspendu pour un aller-retour au client afin d’autoriser le traitement du jeton final. Une fois l’échange terminé, SEC_E_CONTINUE_NEEDED est retourné à l’application avec un cookie de serveur SASL supplémentaire chiffré avec les fonctions de message SSPI. Le cookie de serveur initial indique si l’INTÉGRITÉ et la CONFIDENTIALITÉ sont prises en charge. Ce cookie serveur initial est traité par le client et le client retourne un cookie client pour indiquer quels services le client demande. Le cookie client est ensuite déchiffré par le serveur et les services finaux sont déterminés pour le trafic de message suivant.

Exigences

Exigence Valeur
client minimum pris en charge Aucun pris en charge
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête sspi.h (include Security.h)
bibliothèque Secur32.lib
DLL Secur32.dll