Compartilhar via


Inicializando um contexto de cliente

Um aplicativo deve criar um contexto de cliente antes de poder usar a API Authz para executar verificações de acesso ou auditoria.

Um aplicativo deve chamar a função AuthzInitializeResourceManager para inicializar o gerenciador de recursos. Em seguida, o aplicativo pode chamar uma das várias funções para criar um contexto de cliente. Além disso, se você estiver executando verificações de acesso ou auditoria remotamente, deverá usar a função AuthzInitializeRemoteResourceManager .

Para criar um contexto de cliente com base em um contexto de cliente existente, chame a função AuthzInitializeContextFromAuthzContext .

A função AuthzInitializeContextFromToken cria um novo contexto de cliente usando informações em um token de logon. A função AuthzInitializeContextFromSid cria um novo contexto de cliente usando o SID especificado.

Se possível, chame a função AuthzInitializeContextFromToken em vez de AuthzInitializeContextFromSid. AuthzInitializeContextFromSid tenta recuperar as informações disponíveis em um token de logon em que o cliente realmente fez logon. Um token de logon real fornece mais informações, como o tipo de logon e as propriedades de logon, e reflete o comportamento do pacote de autenticação usado para o logon. O contexto do cliente criado por AuthzInitializeContextFromToken usa um token de logon e o contexto do cliente resultante é mais completo e preciso do que um contexto de cliente criado por AuthzInitializeContextFromSid.

Observação

As variáveis de atributo de segurança devem estar presentes no contexto do cliente se referenciadas em uma expressão condicional; caso contrário, o termo de expressão condicional referenciando-os será avaliado como desconhecido. Para obter mais informações sobre expressões condicionais, consulte o tópico Linguagem de definição de descritor de segurança para ACEs condicionais .

 

Exemplo

O exemplo a seguir inicializa o gerenciador de recursos do Authz e chama a função AuthzInitializeContextFromToken para criar um contexto de cliente do token de logon associado ao processo atual.

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;

}

Adicionando SIDs a um contexto de cliente

Verificações de acesso de cache

Verificando o acesso com a API do Authz

Como o AccessCheck funciona

Consultando um contexto de cliente

Linguagem de definição de descritor de segurança para ACEs condicionais

AuthzInitializeRemoteResourceManager

AuthzInitializeResourceManager