Freigeben über


Initialisieren eines Clientkontexts

Eine Anwendung muss einen Clientkontext erstellen, bevor sie die Authz-API verwenden kann, um Zugriffsprüfungen oder -überwachungen durchzuführen.

Eine Anwendung muss die AuthzInitializeResourceManager-Funktion aufrufen, um den Ressourcen-Manager zu initialisieren. Die Anwendung kann dann eine von mehreren Funktionen aufrufen, um einen Clientkontext zu erstellen. Wenn Sie Zugriffsprüfungen oder Remoteüberwachungen durchführen, müssen Sie außerdem die Funktion AuthzInitializeRemoteResourceManager verwenden.

Um einen Clientkontext basierend auf einem vorhandenen Clientkontext zu erstellen, rufen Sie die AuthzInitializeContextFromAuthzContext-Funktion auf.

Die AuthzInitializeContextFromToken-Funktion erstellt mithilfe von Informationen in einem Anmeldetoken einen neuen Clientkontext. Die AuthzInitializeContextFromSid-Funktion erstellt mithilfe der angegebenen SID einen neuen Clientkontext.

Rufen Sie nach Möglichkeit die AuthzInitializeContextFromToken-Funktion anstelle von AuthzInitializeContextFromSid auf. AuthzInitializeContextFromSid versucht, die in einem Anmeldetoken verfügbaren Informationen abzurufen, wenn der Client tatsächlich angemeldet war. Ein tatsächliches Anmeldetoken bietet weitere Informationen, z. B. Anmeldetyp und Anmeldeeigenschaften, und spiegelt das Verhalten des für die Anmeldung verwendeten Authentifizierungspakets wider. Der von AuthzInitializeContextFromToken erstellte Clientkontext verwendet ein Anmeldetoken, und der resultierende Clientkontext ist vollständiger und genauer als ein von AuthzInitializeContextFromSid erstellter Clientkontext.

Hinweis

Sicherheitsattributevariablen müssen im Clientkontext vorhanden sein, wenn sie in einem bedingten Ausdruck erwähnt werden. Andernfalls wird der bedingte Ausdruck, der auf sie verweist, als unbekannt ausgewertet. Weitere Informationen zu bedingten Ausdrücken finden Sie im Thema Security Descriptor Definition Language for Conditional ACEs .

 

Beispiel

Im folgenden Beispiel wird der Authz-Ressourcen-Manager initialisiert und die AuthzInitializeContextFromToken-Funktion aufgerufen, um einen Clientkontext aus dem Anmeldetoken zu erstellen, das dem aktuellen Prozess zugeordnet ist.

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;

}

Hinzufügen von SIDs zu einem Clientkontext

Zwischenspeichern von Zugriffsprüfungen

Überprüfen des Zugriffs mit der Authz-API

Funktionsweise von AccessCheck

Abfragen eines Clientkontexts

Sicherheitsdeskriptordefinitionssprache für bedingte ACEs

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager