共用方式為


初始化用戶端內容

應用程式必須先建立用戶端內容,才能使用 Authz API 來執行存取檢查或稽核。

應用程式必須呼叫 AuthzInitializeResourceManager 函式,才能初始化資源管理員。 然後,應用程式可以呼叫數個函式的其中一個,以建立用戶端內容。 此外,如果您要從遠端執行存取檢查或稽核,則必須使用 AuthzInitializeRemoteResourceManager 函 式。

若要根據現有的用戶端內容建立用戶端內容,請呼叫 AuthzInitializeCoNtextFromAuthzCoNtext 函 式。

AuthzInitializeCoNtextFromToken函式會使用登入權杖中的資訊來建立新的用戶端內容。 AuthzInitializeCoNtextFromSid函式會使用指定的SID建立新的用戶端內容。

可能的話,請呼叫 AuthzInitializeCoNtextFromToken 函式,而不是 AuthzInitializeCoNtextFromSidAuthzInitializeCoNtextFromSid 嘗試擷取登入權杖中可用的資訊,但用戶端實際上已登入。 實際的登入權杖會提供詳細資訊,例如登入類型和登入屬性,並反映用於登入的驗證套件行為。 AuthzInitializeCoNtextFromToken所建立的用戶端內容會使用登入權杖,而產生的用戶端內容比AuthzInitializeCoNtextFromSid所建立的用戶端內容更完整且精確。

注意

如果在條件運算式中參考,安全性屬性變數必須存在於用戶端內容中;否則,參考條件運算式的詞彙將會評估為未知。 如需條件運算式的詳細資訊,請參閱 條件式 ACE 的安全性描述元定義語言 主題。

 

範例

下列範例會初始化 Authz 資源管理員,並呼叫 AuthzInitializeCoNtextFromToken 函式,從與目前進程相關聯的登入權杖建立用戶端內容。

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;

}

將 SID 新增至用戶端內容

快取存取檢查

使用 Authz API 檢查存取

AccessCheck 的運作方式

查詢用戶端內容

條件式 ACE 的安全性描述元定義語言

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager