Menginisialisasi Konteks Klien

Aplikasi harus membuat konteks klien sebelum dapat menggunakan Authz API untuk melakukan pemeriksaan akses atau audit.

Aplikasi harus memanggil fungsi AuthzInitializeResourceManager untuk menginisialisasi manajer sumber daya. Aplikasi kemudian dapat memanggil salah satu dari beberapa fungsi untuk membuat konteks klien. Selain itu, jika Anda melakukan pemeriksaan akses atau mengaudit dari jarak jauh, Anda harus menggunakan fungsi AuthzInitializeRemoteResourceManager .

Untuk membuat konteks klien berdasarkan konteks klien yang ada, panggil fungsi AuthzInitializeContextFromAuthzContext .

Fungsi AuthzInitializeContextFromToken membuat konteks klien baru dengan menggunakan informasi dalam token masuk. Fungsi AuthzInitializeContextFromSid membuat konteks klien baru dengan menggunakan SID yang ditentukan.

Jika memungkinkan, panggil fungsi AuthzInitializeContextFromTokenalih-alih AuthzInitializeContextFromSid. AuthzInitializeContextFromSid mencoba mengambil informasi yang tersedia dalam token masuk yang benar-benar masuk oleh klien. Token masuk aktual memberikan informasi lebih lanjut, seperti jenis masuk dan properti masuk, dan mencerminkan perilaku paket autentikasi yang digunakan untuk masuk. Konteks klien yang dibuat oleh AuthzInitializeContextFromToken menggunakan token masuk, dan konteks klien yang dihasilkan lebih lengkap dan akurat daripada konteks klien yang dibuat oleh AuthzInitializeContextFromSid.

Catatan

Variabel atribut keamanan harus ada dalam konteks klien jika dirujuk dalam ekspresi kondisi; jika tidak, istilah ekspresi bersyariah yang mereferensikannya akan dievaluasi sebagai tidak diketahui. Untuk informasi selengkapnya tentang ekspresi kondisional, lihat topik Bahasa Definisi Deskriptor Keamanan untuk ACE Bersyarah .

 

Contoh

Contoh berikut menginisialisasi manajer sumber daya Authz dan memanggil fungsi AuthzInitializeContextFromToken untuk membuat konteks klien dari token masuk yang terkait dengan proses saat ini.

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;

}

Menambahkan SID ke Konteks Klien

Pemeriksaan Akses Penembolokan

Memeriksa Akses dengan API Authz

Cara Kerja AccessCheck

Mengkueri Konteks Klien

Bahasa Definisi Deskriptor Keamanan untuk ACE Bersyarah

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager