次の方法で共有


クライアント コンテキストのクエリ

アプリケーションは 、AuthzGetInformationFromContext 関数を呼び出して、既存のクライアント コンテキストに関する情報を照会できます。

AuthzGetInformationFromContext 関数の InfoClass パラメーターは、関数が照会する情報の種類を指定するAUTHZ_CONTEXT_INFORMATION_CLASS列挙から値を受け取ります。

条件付き式で を参照する場合、セキュリティ属性変数はクライアント コンテキストに存在する必要があります。それ以外の場合、それらを参照する条件式の用語は不明として評価されます。 条件式の詳細については、「 条件付き ACE のセキュリティ記述子定義言語」トピックを 参照してください。

次の例では、クライアント コンテキストの初期化から例で作成された クライアント コンテキスト に対してクエリを実行し、そのクライアント コンテキストに関連付けられているグループの SID の一覧を取得します。

BOOL GetGroupsFromContext(AUTHZ_CLIENT_CONTEXT_HANDLE hClientContext)
{

    DWORD                cbSize = 0;
    PTOKEN_GROUPS        pTokenGroups=NULL;
    LPTSTR                StringSid = NULL;
    BOOL                bResult = FALSE;
    int i = 0;

    //Call the AuthzGetInformationFromContext function with a NULL output buffer to get the required buffer size.
    AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, 0, &cbSize, NULL);
    
        
    

    //Allocate the buffer for the TOKEN_GROUPS structure.
    pTokenGroups = (PTOKEN_GROUPS)malloc(cbSize);
    if (!pTokenGroups)
        return FALSE;

    //Get the SIDs of groups associated with the client context. 
    if(!AuthzGetInformationFromContext(hClientContext, AuthzContextInfoGroupsSids, cbSize, &cbSize, pTokenGroups))
    {    
        printf_s("AuthzGetInformationFromContext failed with %d\n", GetLastError);
        free(pTokenGroups);
        return FALSE;
    }

    //Enumerate and display the group SIDs.
    for (i=pTokenGroups->GroupCount-1; i >= 0; --i)
    {
        //Convert a SID to a string.
        if(!ConvertSidToStringSid(
            pTokenGroups->Groups[i].Sid,
            &StringSid
            ))
        {
            LocalFree(StringSid);
            return FALSE;
        }


        wprintf_s(L"%s \n", StringSid);
        
    }

    free(pTokenGroups);

    return TRUE;
}

クライアント コンテキストへの SID の追加

アクセス チェックのキャッシュ

Authz API を使用したアクセスの確認

AccessCheck のしくみ

クライアント コンテキストの初期化

条件付き ACE のセキュリティ記述子定義言語