Initialisation d’un contexte client
Une application doit créer un contexte client avant de pouvoir utiliser l’API Authz pour effectuer des vérifications d’accès ou un audit.
Une application doit appeler la fonction AuthzInitializeResourceManager pour initialiser le gestionnaire de ressources. L’application peut ensuite appeler l’une des fonctions suivantes pour créer un contexte client. En outre, si vous effectuez des vérifications d’accès ou des audits à distance, vous devez utiliser la fonction AuthzInitializeRemoteResourceManager .
Pour créer un contexte client basé sur un contexte client existant, appelez la fonction AuthzInitializeContextFromAuthzContext .
La fonction AuthzInitializeContextFromToken crée un nouveau contexte client à l’aide des informations contenues dans un jeton d’ouverture de session. La fonction AuthzInitializeContextFromSid crée un nouveau contexte client à l’aide du SID spécifié.
Si possible, appelez la fonction AuthzInitializeContextFromToken au lieu de AuthzInitializeContextFromSid. AuthzInitializeContextFromSid tente de récupérer les informations disponibles dans un jeton d’ouverture de session si le client s’est connecté. Un jeton d’ouverture de session réel fournit des informations supplémentaires, telles que le type d’ouverture de session et les propriétés d’ouverture de session, et reflète le comportement du package d’authentification utilisé pour l’ouverture de session. Le contexte client créé par AuthzInitializeContextFromToken utilise un jeton d’ouverture de session, et le contexte client résultant est plus complet et plus précis qu’un contexte client créé par AuthzInitializeContextFromSid.
Notes
Les variables d’attribut de sécurité doivent être présentes dans le contexte client si elles sont mentionnées dans une expression conditionnelle ; sinon, le terme d’expression conditionnelle qui les référence sera évalué comme inconnu. Pour plus d’informations sur les expressions conditionnelles, consultez la rubrique Security Descriptor Definition Language for Conditional ACEs .
Exemple
L’exemple suivant initialise le gestionnaire de ressources Authz et appelle la fonction AuthzInitializeContextFromToken pour créer un contexte client à partir du jeton d’ouverture de session associé au processus en cours.
BOOL AuthzInitFromToken(AUTHZ_CLIENT_CONTEXT_HANDLE *phClientContext)
{
HANDLE hToken = NULL;
LUID Luid = {0, 0};
ULONG uFlags = 0;
//Initialize Resource Manager
if(!AuthzInitializeResourceManager(
AUTHZ_RM_FLAG_NO_AUDIT,
NULL,
NULL,
NULL,
L"My Resource Manager",
&g_hResourceManager
))
{
printf_s("AuthzInitializeResourceManager failed with %d\n", GetLastError);
return FALSE;
}
//Get the current token.
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken))
{
printf_s("OpenProcessToken failed with %d\n", GetLastError);
return FALSE;
}
//Initialize the client context
if(!AuthzInitializeContextFromToken(
0,
hToken,
g_hResourceManager,
NULL,
Luid,
NULL,
phClientContext
))
{
printf_s("AuthzInitializeContextFromToken failed with %d\n", GetLastError);
return FALSE;
}
printf_s("Initialized client context. \n");
return TRUE;
}
Rubriques connexes