Menambahkan SID (Security Identifiers) ke Konteks Klien

Aplikasi dapat menambahkan pengidentifikasi keamanan (SID) ke konteks klien yang ada dengan memanggil fungsiAuthzAddSidsToContext. FungsiAuthzAddSidsToContext memungkinkan aplikasi menentukan daftar SID dan daftar membatasi SID ke konteks klien yang ditentukan.

Sistem menggunakan daftar pembatasan SID saat memeriksa akses token ke objek yang dapat diamankan. Ketika proses atau thread yang dibatasi mencoba mengakses objek yang dapat diamankan, sistem melakukan dua pemeriksaan akses: satu menggunakan SID yang diaktifkan token, dan lainnya menggunakan daftar SID pembatas. Akses diberikan hanya jika kedua pemeriksaan akses mengizinkan hak akses yang diminta.

Variabel atribut harus dalam bentuk ekspresi saat digunakan dengan operator logis; jika tidak, mereka dievaluasi sebagai tidak diketahui.

Contoh

Contoh berikut menambahkan SID dan SID pembatasan ke konteks klien yang dibuat oleh contoh di Menginisialisasi Konteks Klien.

BOOL AddSidsToContext(AUTHZ_CLIENT_CONTEXT_HANDLE *phClientContext)
{
    AUTHZ_CLIENT_CONTEXT_HANDLE        NewContext = NULL;
    PSID                            pEveryoneSid = NULL;
    PSID                            pLocalSid = NULL;
    SID_AND_ATTRIBUTES                Sids;
    SID_AND_ATTRIBUTES                RestrictedSids;
    DWORD                            SidCount = 0;
    DWORD                            RestrictedSidCount = 0;

    //Create a PSID from the "Everyone" well-known SID.
    if(!ConvertStringSidToSid(L"S-1-1-0", &pEveryoneSid))
    {
        printf_s("ConvertStringSidToSid failed with %d\n", GetLastError());
        return FALSE;
    }

    //Create a PSID from the "Local" well-known SID.
    if(!ConvertStringSidToSid(L"S-1-2-0", &pLocalSid))
    {
        printf_s("ConvertStringSidToSid failed with %d\n", GetLastError);
        return FALSE;
    }

    //Set the members of the SID_AND_ATTRIBUTES structure to be added.
    Sids.Sid = pEveryoneSid;
    Sids.Attributes = SE_GROUP_ENABLED;

    //Set the members of the SID_AND_ATTRIBUTES structure for the restricting SID.
    RestrictedSids.Sid = pLocalSid;
    RestrictedSids.Attributes = SE_GROUP_ENABLED;

    

    //Create a new context with the new "Everyone" SID and "Local" restricting SID.
    if(!AuthzAddSidsToContext(
        *phClientContext,
        &Sids,
        1,
        &RestrictedSids,
        1,
        &NewContext))
    {
        printf_s("AuthzAddSidsToContext failed with %d\n", GetLastError());
        if(pEveryoneSid)
        {
            FreeSid(pEveryoneSid);
        }
        if(pLocalSid)
        {
            FreeSid(pLocalSid);
        }
        return FALSE;
    }

    if(pEveryoneSid)
        {
            FreeSid(pEveryoneSid);
        }
        if(pLocalSid)
        {
            FreeSid(pLocalSid);
        }
        
        AuthzFreeContext(*phClientContext);
        *phClientContext = NewContext;

    return TRUE;

}

Pemeriksaan Akses Cache

Memeriksa Akses dengan Authz API

Menginisialisasi Konteks untuk Klien

Melakukan Kueri Konteks Klien