Initialisation d’un contexte client

Une application doit créer un contexte client pour pouvoir utiliser l’API auth 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 un audit à 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 sidspécifié.

Si possible, appelez la fonction AuthzInitializeContextFromToken à la place de AuthzInitializeContextFromSid. AuthzInitializeContextFromSid tente de récupérer les informations disponibles dans un jeton d’ouverture de session si le client est actuellement connecté. Un jeton d’ouverture de session réel fournit plus d’informations, telles que le type de connexion et les propriétés de connexion, 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 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 référencées dans une expression conditionnelle ; dans le cas contraire, le terme des expressions conditionnelles qui les référencera sera évalué comme inconnu. Pour plus d’informations sur les expressions conditionnelles, consultez la rubrique langage de définition du descripteur de sécurité pour les ACE conditionnel .

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;

}

Ajout de sid à un contexte client

Mise en cache des contrôles d’accès

Vérification de l’accès avec l’API auth

Fonctionnement de AccessCheck

Interrogation d’un contexte client

Langage de définition du descripteur de sécurité pour les ACE conditionnelles

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager