Compartilhar via


estrutura HTTP_REQUEST_AUTH_INFO (http.h)

A estrutura HTTP_REQUEST_AUTH_INFO contém o status de autenticação da solicitação com um identificador para o token de cliente que o processo de recebimento pode usar para representar o cliente autenticado.

Essa estrutura está contida na estrutura HTTP_REQUEST_INFO .

Sintaxe

typedef struct _HTTP_REQUEST_AUTH_INFO {
  HTTP_AUTH_STATUS       AuthStatus;
  SECURITY_STATUS        SecStatus;
  ULONG                  Flags;
  HTTP_REQUEST_AUTH_TYPE AuthType;
  HANDLE                 AccessToken;
  ULONG                  ContextAttributes;
  ULONG                  PackedContextLength;
  ULONG                  PackedContextType;
  PVOID                  PackedContext;
  ULONG                  MutualAuthDataLength;
  PCHAR                  pMutualAuthData;
  USHORT                 PackageNameLength;
  PWSTR                  pPackageName;
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO;

Membros

AuthStatus

Um membro da enumeração HTTP_AUTH_STATUS que indica o status de autenticação final da solicitação.

Se o status de autenticação não for HttpAuthStatusSuccess, os aplicativos deverão ignorar os membros dessa estrutura, exceto AuthStatus, SecStatus e AuthType.

SecStatus

Um valor SECURITY_STATUS que indica a falha de segurança status quando o membro AuthStatus é HttpAuthStatusFailure.

Flags

Os sinalizadores de autenticação que indicam os seguintes atributos de autenticação:

Atributo Significado
HTTP_REQUEST_AUTH_FLAG_TOKEN_FOR_CACHED_CRED
O token fornecido é para NTLM e baseia-se em uma credencial armazenada em cache de uma conexão KA (Keep Alive).

AuthType

Um membro da enumeração HTTP_REQUEST_AUTH_TYPE que indica o esquema de autenticação tentado ou estabelecido para a solicitação.

AccessToken

Um identificador para o token de cliente que o processo de recebimento pode usar para representar o cliente autenticado.

O identificador para o token deve ser fechado chamando CloseHandle quando ele não for mais necessário. Esse token é válido apenas para o tempo de vida da solicitação. Os aplicativos podem regenerar o desafio inicial 401 para autenticar novamente quando o token expirar.

ContextAttributes

Os atributos de contexto do cliente para o token de acesso.

PackedContextLength

O comprimento, em bytes, do PackedContext.

PackedContextType

O tipo de contexto no membro PackedContext .

PackedContext

O contexto de segurança para o tipo de autenticação.

Os aplicativos podem consultar os atributos do contexto empacotado chamando a API QueryContextAttributes do SSPI. No entanto, os aplicativos devem adquirir um identificador de credencial para o pacote de segurança do AuthType indicado.

O aplicativo deve chamar a API FreeContextBuffer do SSPI para liberar o contexto serializado quando ele não for mais necessário.

MutualAuthDataLength

O comprimento, em bytes, do membro pMutualAuthData .

pMutualAuthData

Os dados de autenticação mútua codificados em Base64 usados no cabeçalho WWW-Authenticate.

PackageNameLength

pPackageName

Comentários

A partir da versão HTTP 2.0, a estrutura HTTP_REQUEST contém uma estrutura HTTP_REQUEST_INFO . O membro pVoid da estrutura HTTP_REQUEST_INFO aponta para o HTTP_REQUEST_AUTH_INFO quando o tipo de informação de solicitação é HttpRequestInfoTypeAuth.

Quando o aplicativo recebe uma solicitação com essa estrutura e a solicitação não foi autenticada, ele pode enviar o desafio inicial 401 com o conjunto desejado de cabeçalhos WWW-Authenticate na estrutura HTTP_MULTIPLE_KNOWN_HEADERS . Quando a API do servidor HTTP conclui o handshake de autenticação, ela preenche a estrutura HTTP_REQUEST_AUTH_INFO e a passa para o aplicativo com a solicitação novamente. O identificador para o token de acesso que representa a identidade do cliente é fornecido nessa estrutura pela API do servidor HTTP.

Atributos de contexto

O membro ContextAttributes é fornecido para esquemas baseados em SSPI. Por exemplo, os aplicativos SSPI podem determinar se ASC_RET_MUTUAL_AUTH está definido para uma sessão mutuamente autenticada.

A API do servidor HTTP não fornece o tempo de expiração para o contexto no membro PackedContext . Os aplicativos podem exigir o tempo de expiração em circunstâncias específicas, por exemplo, quando o cache de credenciais NTLM está habilitado e o aplicativo consulta o tempo de expiração para um contexto armazenado em cache. Se o aplicativo de servidor exigir o tempo de expiração para o contexto de cliente subjacente associado ao token de acesso, ele poderá receber o contexto empacotado e chamar QueryContextAttributes com o SECPKG_ATTR_LIFESPAN.

Dados de Autenticação Mútua

Por padrão, a API do servidor HTTP garante que os dados de autenticação mútua sejam adicionados à resposta final de 200; em geral, os aplicativos de servidor não são responsáveis por enviar os dados de autenticação mútua.

No entanto, os aplicativos podem receber os dados de autenticação mútua e enviá-los com a resposta final. Quando o membro ReceiveMutualAuth da estrutura HTTP_SERVER_AUTHENTICATION_INFO é definido como true, os aplicativos recebem as credenciais do servidor para autenticação mútua junto com a solicitação autenticada.

Os dados de autenticação mútua fornecidos no membro pMutualAuthData contêm o valor exato de WWW-Authenticate cabeçalho sem o nome do cabeçalho. Por exemplo, pMutualAuthData aponta para "Negociar ade02938481eca". O aplicativo cria o cabeçalho WWW-Authenticate acrescentando o pMutualAuthData fornecido como um valor de cabeçalho de resposta.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Cabeçalho http.h

Confira também

Estruturas da API do servidor HTTP versão 2.0

HTTP_REQUEST_INFO

HTTP_REQUEST_V2