Fonction de rappel SpInitLsaModeContextFn (ntsecpkg.h)
La fonction SpInitLsaModeContext est la fonction de répartition du client utilisée pour établir un contexte de sécurité entre un serveur et un client.
La fonction SpInitLsaModeContext est appelée lorsque le client appelle la fonction InitializeSecurityContext (Général) de l’interface du fournisseur de support de sécurité.
Syntaxe
SpInitLsaModeContextFn Spinitlsamodecontextfn;
NTSTATUS Spinitlsamodecontextfn(
[in] LSA_SEC_HANDLE CredentialHandle,
[in] LSA_SEC_HANDLE ContextHandle,
[in] PUNICODE_STRING TargetName,
[in] ULONG ContextRequirements,
[in] ULONG TargetDataRep,
[in] PSecBufferDesc InputBuffers,
[out] PLSA_SEC_HANDLE NewContextHandle,
[out] PSecBufferDesc OutputBuffers,
[out] PULONG ContextAttributes,
[out] PTimeStamp ExpirationTime,
[out] PBOOLEAN MappedContext,
[out] PSecBuffer ContextData
)
{...}
Paramètres
[in] CredentialHandle
Facultatif. Gérez les informations d’identification à utiliser pour le contexte. CredentialHandle peut avoir la valeur NULL si le paramètre ContextHandle n’est pas NULL.
[in] ContextHandle
facultatif. Gérez le contexte à utiliser comme base pour ce contexte. ContextHandle peut avoir la valeur NULL si le paramètre CredentialHandle n’est pas NULL.
[in] TargetName
facultatif. Pointeur vers un UNICODE_STRING contenant le nom de la cible du contexte. Le contenu de TargetName est spécifique au package et n’est pas interprété par LSA.
[in] ContextRequirements
Indicateurs indiquant les attributs de contexte requis par le client. Les attributs de contexte réels sont retournés dans le paramètre ContextAttributes .
Le tableau suivant répertorie les valeurs valides.
Valeur | Signification |
---|---|
|
Le serveur est autorisé à emprunter l’identité du client. |
|
Le client et le serveur doivent prouver leur identité. |
|
Le contexte de sécurité prend en charge la détection des paquets relus. |
|
Le contexte de sécurité prend en charge la détection des messages en désordre. |
|
Une nouvelle clé de session doit être négociée. |
|
Si le client est un utilisateur interactif, le package doit, si possible, demander à l’utilisateur les informations d’identification appropriées. |
|
La mémoire tampon d’entrée contient des informations d’identification spécifiques au package qui doivent être utilisées pour authentifier la connexion. |
|
Le package doit allouer de la mémoire. L’appelant doit finalement appeler la fonction FreeContextBuffer pour libérer la mémoire allouée par le package. |
|
L’appelant attend une transaction d’authentification mutuelle à trois étapes. |
|
Un canal de communication de type datagramme doit être utilisé. Pour plus d’informations, consultez Contextes de datagramme. |
|
Un canal de communication de type connexion doit être utilisé. Pour plus d’informations, consultez Contextes orientés connexion. |
|
Si le contexte échoue, générez un message de réponse d’erreur à renvoyer au client. |
|
Un canal de communication de type flux doit être utilisé. Pour plus d’informations, consultez contextes Stream. |
|
L’intégrité de la mémoire tampon est vérifiée ; Toutefois, les messages relus et hors séquence ne sont pas détectés. |
[in] TargetDataRep
Indicateur indiquant la représentation des données, telle que l’ordre des octets, sur la cible. Contient SECURITY_NATIVE_DREP ou SECURITY_NETWORK_DREP.
[in] InputBuffers
Pointeur vers une structure SecBufferDesc contenant le message de réponse précédent du serveur. La première fois que cette fonction est appelée le paramètre InputBuffers est NULL.
[out] NewContextHandle
Pointeur qui reçoit un handle vers le nouveau contexte de sécurité. Lorsque vous avez terminé d’utiliser le contexte de sécurité, libérez le handle en appelant la fonction SpDeleteContext .
[out] OutputBuffers
Pointeur vers une structure SecBufferDesc contenant le jeton de sécurité à transmettre au serveur.
[out] ContextAttributes
Pointeur vers des indicateurs spécifiant les attributs du nouveau contexte. Le client demande un ensemble d’attributs à l’aide du paramètre ContextRequirements . Si les indicateurs ContextRequirements ne correspondent pas aux indicateurs ContextAttributes , le client doit décider de continuer ou de se terminer. Pour obtenir la liste complète des indicateurs valides, consultez Conditions requises pour le contexte.
[out] ExpirationTime
Pointeur vers un TimeStamp qui reçoit l’heure d’expiration du nouveau contexte.
[out] MappedContext
Pointeur vers une valeur booléenne. Définissez MappedContext sur TRUE si le package de sécurité implémente les fonctions SSP/AP en mode utilisateur.
[out] ContextData
Pointeur vers une structure SecBuffer qui reçoit les données à copier lors de la création d’un contexte de sécurité en mode utilisateur. Allouez de la mémoire pour ContextData à l’aide de la fonction AllocateLsaHeap . Le LSA libérera la mémoire.
Valeur retournée
Si la fonction réussit et qu’aucun traitement supplémentaire n’est nécessaire, retournez STATUS_SUCCESS. Si le traitement n’est pas terminé, la fonction doit retourner SEC_I_CONTINUE_NEEDED. Lorsque cette valeur est retournée, l’appelant doit appeler à nouveau la fonction InitializeSecurityContext (Général).
Si la fonction ne parvient pas à créer le contexte de sécurité pour une autre raison, elle doit retourner un code NTSTATUS indiquant la raison de son échec.
Remarques
La fonction SpAcceptLsaModeContext est la fonction côté serveur permettant de créer un contexte.
Les fournisseurs de services partagés/fournisseurs d’accès doivent implémenter la fonction SpInitLsaModeContext ; toutefois, le nom réel donné à l’implémentation appartient au développeur.
Un pointeur vers la fonction SpInitLsaModeContext est disponible dans la structure SECPKG_FUNCTION_TABLE reçue de la fonction SpLsaModeInitialize .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | ntsecpkg.h |