Compartir a través de


Consulta de un contexto de cliente

Las aplicaciones pueden llamar a la función AuthzGetInformationFromContext para consultar información sobre un contexto de cliente existente.

El parámetro InfoClass de la función AuthzGetInformationFromContext toma un valor de la enumeración AUTHZ_CONTEXT_INFORMATION_CLASS que especifica qué tipo de información consulta la función.

Las variables de atributo de seguridad deben estar presentes en el contexto de cliente si se hace referencia a en una expresión condicional; de lo contrario, el término de expresión condicional que hace referencia a ellos se evaluará como desconocido. Para obtener más información sobre las expresiones condicionales, vea el tema Lenguaje de definición de descriptores de seguridad para ASE condicionales .

Ejemplo

En el ejemplo siguiente se consulta el contexto de cliente creado en el ejemplo de Inicialización de un contexto de cliente para recuperar la lista de SID de grupos asociados a ese contexto de cliente.

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

Adición de SID a un contexto de cliente

Comprobaciones de acceso de almacenamiento en caché

Comprobación del acceso con authz API

Funcionamiento de AccessCheck

Inicialización de un contexto de cliente

Lenguaje de definición de descriptor de seguridad para ASE condicionales