Condividi tramite


Inizializzazione di un contesto client

Un'applicazione deve creare un contesto client prima di poter usare l'API Authz per eseguire controlli di accesso o controllo.

Un'applicazione deve chiamare la funzione AuthzInitializeResourceManager per inizializzare resource manager. L'applicazione può quindi chiamare una di diverse funzioni per creare un contesto client. Inoltre, se si eseguono controlli di accesso o controllo in remoto, è necessario usare la funzione AuthzInitializeRemoteResourceManager .

Per creare un contesto client basato su un contesto client esistente, chiamare la funzione AuthzInitializeContextFromAuthzContext .

La funzione AuthzInitializeContextFromToken crea un nuovo contesto client usando le informazioni in un token di accesso. La funzione AuthzInitializeContextFromSid crea un nuovo contesto client usando il SID specificato.

Se possibile, chiamare la funzione AuthzInitializeContextFromToken anziché AuthzInitializeContextFromSid. AuthzInitializeContextFromSid tenta di recuperare le informazioni disponibili in un token di accesso con il client effettivamente connesso. Un token di accesso effettivo fornisce altre informazioni, ad esempio il tipo di accesso e le proprietà di accesso e riflette il comportamento del pacchetto di autenticazione usato per l'accesso. Il contesto client creato da AuthzInitializeContextFromToken usa un token di accesso e il contesto client risultante è più completo e accurato di un contesto client creato da AuthzInitializeContextFromSid.

Nota

Le variabili di attributo di sicurezza devono essere presenti nel contesto client se indicato in un'espressione condizionale; in caso contrario, il termine dell'espressione condizionale che li fa riferimento verrà valutato come sconosciuto. Per altre informazioni sulle espressioni condizionali, vedere l'argomento Linguaggio di definizione del descrittore di sicurezza per gli ACL condizionali .

 

Esempio

Nell'esempio seguente viene inizializzato il gestore risorse Authz e viene chiamata la funzione AuthzInitializeContextFromToken per creare un contesto client dal token di accesso associato al processo corrente.

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;

}

Aggiunta di SID a un contesto client

Memorizzazione nella cache dei controlli di accesso

Controllo dell'accesso con l'API Authz

Funzionamento di AccessCheck

Esecuzione di query su un contesto client

Linguaggio di definizione del descrittore di sicurezza per gli ACL condizionali

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager