Freigeben über


Abfragen eines Clientkontexts

Anwendungen können die Funktion AuthzGetInformationFromContext aufrufen, um Informationen zu einem vorhandenen Clientkontext abzufragen.

Der InfoClass-Parameter der AuthzGetInformationFromContext-Funktion verwendet einen Wert aus der AUTHZ_CONTEXT_INFORMATION_CLASS Enumeration, die angibt, welche Art von Informationen die Funktionsabfragen angibt.

Sicherheitsattributevariablen müssen im Clientkontext vorhanden sein, wenn in einem bedingten Ausdruck verwiesen wird; 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 im Beispiel erstellte Clientkontext von der Initialisierung eines Clientkontexts abgefragt, um die Liste der SIDs von Gruppen abzurufen, die diesem Clientkontext zugeordnet sind.

BOOL GetGroupsFromContext(AUTHZ_CLIENT_CONTEXT_HANDLE hClientContext)
{

    DWORD                cbSize = 0;
    PTOKEN_GROUPS        pTokenGroups=NULL;
    LPTSTR                StringSid = NULL;
    BOOL                bResult = FALSE;
    int i = 0;

    //Call the AuthzGetInformationFromContext function with a NULL output buffer to get the required buffer size.
    AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, 0, &cbSize, NULL);
    
        
    

    //Allocate the buffer for the TOKEN_GROUPS structure.
    pTokenGroups = (PTOKEN_GROUPS)malloc(cbSize);
    if (!pTokenGroups)
        return FALSE;

    //Get the SIDs of groups associated with the client context. 
    if(!AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, cbSize, &cbSize, pTokenGroups))
    {    
        printf_s("AuthzGetInformationFromContext failed with %d\n", GetLastError);
        free(pTokenGroups);
        return FALSE;
    }

    //Enumerate and display the group SIDs.
    for (i=pTokenGroups->GroupCount-1; i >= 0; --i)
    {
        //Convert a SID to a string.
        if(!ConvertSidToStringSid(
            pTokenGroups->Groups[i].Sid,
            &StringSid
            ))
        {
            LocalFree(StringSid);
            return FALSE;
        }


        wprintf_s(L"%s \n", StringSid);
        
    }

    free(pTokenGroups);

    return TRUE;
}

Hinzufügen von SIDs zu einem Clientkontext

Zwischenspeichern von Zugriffsüberprüfungen

Überprüfen des Zugriffs mit der Authz-API

Funktionsweise von AccessCheck

Initialisieren eines Clientkontexts

Sicherheitsdeskriptordefinitionssprache für bedingte ACEs