Compartir a través de


Inicialización de un contexto de cliente

Una aplicación debe crear un contexto de cliente para poder usar authz API para realizar comprobaciones de acceso o auditoría.

Una aplicación debe llamar a la función AuthzInitializeResourceManager para inicializar el administrador de recursos. A continuación, la aplicación puede llamar a una de varias funciones para crear un contexto de cliente. Además, si realiza comprobaciones de acceso o auditoría de forma remota, debe usar la función AuthzInitializeRemoteResourceManager .

Para crear un contexto de cliente basado en un contexto de cliente existente, llame a la función AuthzInitializeContextFromAuthzContext .

La función AuthzInitializeContextFromToken crea un nuevo contexto de cliente mediante el uso de información en un token de inicio de sesión. La función AuthzInitializeContextFromSid crea un nuevo contexto de cliente mediante el SID especificado.

Si es posible, llame a la función AuthzInitializeContextFromToken en lugar de AuthzInitializeContextFromSid. AuthzInitializeContextFromSid intenta recuperar la información disponible en un token de inicio de sesión que el cliente realmente ha iniciado sesión. Un token de inicio de sesión real proporciona más información, como el tipo de inicio de sesión y las propiedades de inicio de sesión, y refleja el comportamiento del paquete de autenticación usado para el inicio de sesión. El contexto de cliente creado por AuthzInitializeContextFromToken usa un token de inicio de sesión y el contexto de cliente resultante es más completo y preciso que un contexto de cliente creado por AuthzInitializeContextFromSid.

Nota

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 ACL condicionales .

 

Ejemplo

En el ejemplo siguiente se inicializa el administrador de recursos de Authz y se llama a la función AuthzInitializeContextFromToken para crear un contexto de cliente a partir del token de inicio de sesión asociado al proceso actual.

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;

}

Adición de SID a un contexto de cliente

Almacenamiento en caché de comprobaciones de acceso

Comprobación del acceso con la API de Authz

Funcionamiento de AccessCheck

Consulta de un contexto de cliente

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

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager