Noções básicas sobre autenticação HTTP
A autenticação é o processo de identificar quem é o cliente, normalmente para determinar se o cliente é elegível para acessar um recurso. O protocolo HTTP suporta autenticação como um meio de negociar o acesso a um recurso seguro.
A solicitação inicial de um cliente normalmente é uma solicitação anônima, não contendo nenhuma informação de autenticação. Os aplicativos de servidor HTTP podem negar a solicitação anônima enquanto indicam que a autenticação é necessária. O aplicativo de servidor envia cabeçalhos WWW-Authentication para indicar os esquemas de autenticação suportados. Este artigo descreve vários esquemas de autenticação para HTTP e discute seu suporte no Windows Communication Foundation (WCF).
Esquemas de autenticação HTTP
O servidor pode especificar vários esquemas de autenticação para o cliente escolher. A tabela a seguir descreve alguns dos esquemas de autenticação comumente encontrados em aplicativos do Windows:
Esquema de autenticação | Description |
---|---|
Anónimo | Uma solicitação anônima não contém informações de autenticação. Anonymous equivale a conceder a todos acesso ao recurso. |
Básica | A autenticação básica envia uma cadeia de caracteres codificada em Base64 que contém um nome de usuário e senha para o cliente. Base64 não é uma forma de criptografia e deve ser considerado o mesmo que enviar o nome de usuário e senha em texto não criptografado. Se um recurso precisar ser protegido, considere fortemente o uso de um esquema de autenticação diferente da autenticação básica. |
Resumo | A autenticação Digest é um esquema de desafio-resposta destinado a substituir a autenticação Básica. O servidor envia uma cadeia de dados aleatórios chamada nonce para o cliente como um desafio. O cliente responde com um hash que inclui o nome de usuário, senha e nonce, entre informações adicionais. A complexidade que essa troca introduz e o hashing de dados tornam mais difícil roubar e reutilizar as credenciais do usuário com esse esquema de autenticação. A autenticação Digest requer o uso de contas de domínio do Windows. O domínio digest é o nome de domínio do Windows. Portanto, você não pode usar um servidor em execução em um sistema operacional que não ofereça suporte a domínios do Windows, como o Windows XP Home Edition, com autenticação Digest. Por outro lado, quando o cliente é executado em um sistema operacional que não suporta domínios do Windows, uma conta de domínio deve ser especificada explicitamente durante a autenticação. |
NTLM | A autenticação NT LAN Manager (NTLM) é um esquema de desafio-resposta que é uma variação mais segura da autenticação Digest. O NTLM usa credenciais do Windows para transformar os dados de desafio em vez do nome de usuário e senha não codificados. A autenticação NTLM requer várias trocas entre o cliente e o servidor. O servidor e quaisquer proxies intervenientes devem suportar conexões persistentes para concluir a autenticação com êxito. |
Negociar | A autenticação Negotiate seleciona automaticamente entre o protocolo Kerberos e a autenticação NTLM, dependendo da disponibilidade. O protocolo Kerberos é usado se estiver disponível; caso contrário, o NTLM é tentado. A autenticação Kerberos melhora significativamente em relação ao NTLM. A autenticação Kerberos é mais rápida que a NTLM e permite o uso de autenticação mútua e delegação de credenciais para máquinas remotas. |
Windows Live ID | O serviço HTTP subjacente do Windows inclui autenticação usando protocolos federados. No entanto, os transportes HTTP padrão no WCF não suportam o uso de esquemas de autenticação federada, como o Microsoft Windows Live ID. O suporte para esse recurso está atualmente disponível usando a segurança de mensagens. Para obter mais informações, consulte Federação e tokens emitidos. |
Escolha um esquema de autenticação
Ao selecionar os possíveis esquemas de autenticação para um servidor HTTP, alguns itens a serem considerados incluem o seguinte:
Considere se o recurso precisa ser protegido. Usar a autenticação HTTP requer a transmissão de mais dados e pode limitar a interoperabilidade com os clientes. Permita acesso anônimo a recursos que não precisam ser protegidos.
Se o recurso precisar ser protegido, considere quais esquemas de autenticação fornecem o nível de segurança necessário. O esquema de autenticação padrão mais fraco discutido aqui é a autenticação básica. A autenticação básica não protege as credenciais do usuário. O esquema de autenticação padrão mais forte é a autenticação Negotiate, resultando no protocolo Kerberos.
Um servidor não deve apresentar, por exemplo, nos cabeçalhos WWW-Authentication), qualquer esquema que não esteja preparado para aceitar ou que não proteja adequadamente o recurso protegido. Os clientes são livres para escolher entre qualquer um dos esquemas de autenticação que o servidor apresenta. Alguns clientes usam como padrão um esquema de autenticação fraco ou o primeiro esquema de autenticação na lista do servidor.