다음을 통해 공유


클라이언트 컨텍스트 쿼리

애플리케이션은 AuthzGetInformationFromContext 함수를 호출하여 기존 클라이언트 컨텍스트에 대한 정보를 쿼리할 수 있습니다.

AuthzGetInformationFromContext 함수의 InfoClass 매개 변수는 함수가 쿼리하는 정보의 유형을 지정하는 AUTHZ_CONTEXT_INFORMATION_CLASS 열거형의 값을 사용합니다.

조건식에서 참조하는 경우 보안 특성 변수가 클라이언트 컨텍스트에 있어야 합니다. 그렇지 않으면 이를 참조하는 조건식 용어가 알 수 없는 것으로 평가됩니다. 조건식에 대한 자세한 내용은 조건부 ACE에 대한 보안 설명자 정의 언어 항목을 참조하세요.

예제

다음 예제에서는 클라이언트 컨텍스트 초기화에서 예제에서 만든 클라이언트 컨텍스트를 쿼리하여 해당 클라이언트 컨텍스트 와 연결된 그룹의 SID 목록을 검색 합니다 .

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;
}

클라이언트 컨텍스트에 SID 추가

액세스 검사 캐싱

Authz API를 사용하여 액세스 확인

AccessCheck 작동 방식

클라이언트 컨텍스트 초기화

조건부 ACE에 대한 보안 설명자 정의 언어