Partager via


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
ISC_REQ_DELEGATE
Le serveur est autorisé à emprunter l’identité du client.
ISC_REQ_MUTUAL_AUTH
Le client et le serveur doivent prouver leur identité.
ISC_REQ_REPLAY_DETECT
Le contexte de sécurité prend en charge la détection des paquets relus.
ISC_REQ_SEQUENCE_DETECT
Le contexte de sécurité prend en charge la détection des messages en désordre.
ISC_REQ_USE_SESSION_KEY
Une nouvelle clé de session doit être négociée.
ISC_REQ_PROMPT_FOR_CREDS
Si le client est un utilisateur interactif, le package doit, si possible, demander à l’utilisateur les informations d’identification appropriées.
ISC_REQ_USE_SUPPLIED_CREDS
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.
ISC_REQ_ALLOCATE_MEMORY
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.
ISC_REQ_USE_DCE_STYLE
L’appelant attend une transaction d’authentification mutuelle à trois étapes.
ISC_REQ_DATAGRAM
Un canal de communication de type datagramme doit être utilisé. Pour plus d’informations, consultez Contextes de datagramme.
ISC_REQ_CONNECTION
Un canal de communication de type connexion doit être utilisé. Pour plus d’informations, consultez Contextes orientés connexion.
ISC_REQ_EXTENDED_ERROR
Si le contexte échoue, générez un message de réponse d’erreur à renvoyer au client.
ISC_REQ_STREAM
Un canal de communication de type flux doit être utilisé. Pour plus d’informations, consultez contextes Stream.
ISC_REQ_INTEGRITY
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

Voir aussi

AllocateLsaHeap

InitializeSecurityContext (Général)

SECPKG_FUNCTION_TABLE

SpAcceptLsaModeContext

SpLsaModeInitialize

TimeStamp