Somente da perspectiva do Windows:
NTLM
- trabalhos com tanto externa (sem domínio) e internos clientes
- funciona com contas de domínio e contas de usuário local na caixa IIS
- usando contas de domínio, apenas o servidor requer conectividade direta com um controlador de domínio (DC)
- usando contas locais, você não precisa de conectividade em nenhum lugar :)
- você não precisa fazer logon como usuário em questão para usar uma credencial
- Além : não é incomum para um DC para ser oprimido por um servidor ocupado NTLM (IIS, o Exchange, TMG / ISA, etc) com o volume de solicitações NTLM (para mitigar:
MaxConcurrentAPI
, AuthPersistSingleRequest
(false) ., Mais rápido DCs) ( Auto- bônus referencial .)
- requer conectividade do cliente apenas com o servidor IIS (na porta do site, nada mais. Por exemplo, tudo acontece por HTTP (ou HTTPS).)
- pode atravessar qualquer proxy que suporte HTTP Keep-Alive s
- você pode usar o TLS / SSL para solucionar outras pessoas
- requer várias viagens de ida e volta para autenticar, com pacotes pequenos
- (o padrão do log é 401.2, 401.1, 200 com nome de usuário)
- não pode ser usado em cenários em que a autenticação de salto duplo é necessária
- ou seja, as credenciais do usuário devem ser encaminhadas para um serviço em outro computador
- suporta clientes mais antigos (<Win2000)
- É suscetível a discrepâncias no nível de autenticação LM (incompatível
lmcompatibilitylevel
)
- é usado como fallback pelo pacote Negotiate se Curb falhar.
- ( não "se o acesso for negado com o Kerb", o Kerb deve interromper para que o NTLM seja usado - geralmente isso parece não receber um ticket. Se o cliente receber um ticket e não for perfeito, isso não causará um fallback.)
Kerberos
- funciona apenas com clientes ingressados no domínio atualmente
- requer conectividade do cliente com um AD DC (tcp / udp 88) E o servidor (os tickets são recuperados pelo cliente do DC pela porta Curb e, em seguida, são fornecidos ao servidor usando HTTP)
pode ser capaz de atravessar um proxy, mas consulte o ponto DC acima: você ainda precisa estar na mesma rede que um DC ativo, assim como o servidor .
- portanto, em teoria, se você tivesse um domínio no qual clientes conectados à Internet conversassem diretamente com um controlador de domínio conectado à Internet, seria viável. Mas não faça isso a menos que você já saiba disso.
- Em cenários de proxy reverso (ISA / TMG), o servidor de transição de protocolo precisa estar nessa rede, ou seja, não no cliente ... mas, em seguida, o cliente não é aquele que está realizando o bit Kerberos (necessariamente - pense em Forms auth to Curb transição).
o ticket tem vida longa (10h), significando menos comunicação DC durante a vida útil do ticket - e para enfatizar: isso pode economizar milhares a milhões de solicitações por cliente durante esse período de vida útil ( AuthPersistNonNTLM
ainda é uma coisa; a validação Kerberos PAC costumava ser uma coisa)
- requer uma única viagem de ida e volta para autenticar, mas o tamanho da carga útil da autenticação é relativamente grande (geralmente de 6 a 16K) ( 401 , {(codificado) tamanho do token} 200 )
- pode ser usado com a delegação (por favor, sempre restrita ) para habilitar a autenticação do Windows do usuário que está se conectando ao próximo serviço
- por exemplo, para permitir o
UserA
acesso ao IIS e usar a mesma conta de usuário quando o IIS acessar o SQL Server, isso é "delegação de autenticação".
- ( Restringido neste contexto significa "mas não mais nada", por exemplo, Exchange ou outra caixa SQL)
- atualmente é o pacote de segurança principal para autenticação de negociação
- o que significa que os membros do domínio do Windows preferem quando podem obtê-lo
- requer registro de SPNs , o que pode ser complicado. Regras que ajudam .
- requer o uso de um nome como destino, não um endereço IP
- razões pelas quais o freio pode falhar:
- usando um endereço IP em vez de um nome
- nenhum SPN registrado
- SPNs duplicados registrados
- SPN registrado com conta incorreta (
KRB_ERR_AP_MODIFIED
)
- sem conectividade DNS / DC do cliente
- configuração de proxy do cliente / zona da intranet local não usada para o site de destino
Enquanto estamos nisso:
Basic
- pode multi-hop. Mas o faz expondo seu nome de usuário e senha diretamente ao aplicativo Web de destino
- que pode fazer o que quiser com eles. Qualquer coisa .
- "Oh, fez um administrador de domínio apenas usar meu aplicativo? E eu acabei de ler seus e-mails? Então redefinir sua senha? Awww. Pity "
- precisa de segurança da camada de transporte (ou seja, TLS / SSL) para qualquer forma de segurança.
- e depois, veja a edição anterior
- funciona com qualquer navegador
- (mas veja a primeira edição )
- requer uma única viagem de ida e volta para autenticar ( 401 , 200 )
- pode ser usado em cenários multi-hop porque o Windows pode executar um logon interativo com credenciais básicas
- Pode ser necessário
LogonType
que esteja configurado para fazer isso (pense que o padrão foi alterado para texto não criptografado da rede entre 2000 e 2003, mas pode estar errado)
- mas , novamente , veja a primeira edição .
- Tem a impressão de que a primeira questão é realmente importante? Isto é.
Resumindo:
O meio-fio pode ser complicado de configurar, mas existem muitos guias (o meu ) por aí que tentam simplificar o processo, e as ferramentas melhoraram bastante de 2003 a 2008 ( SetSPN
podem procurar duplicatas, que é o problema mais comum em questão). ; useSETSPN -S
sempre que vir orientação para usar -A e a vida será mais feliz).
Delegação restrita vale o custo de admissão.
Outra abordagem seria definir a autenticação
negotiate
e usar os dois em vez de um em vez do outro.fonte
No Microsoft Application Verifier , que detecta erros comuns do desenvolvedor. Um desses erros é o uso do NTLM :
fonte
Você deve adicionar um ponto muito importante:
O Kerberos é um protocolo padrão e aberto no Unix há mais de 20 anos, enquanto o NTLM é uma solução exclusivamente proprietária da Microsoft e conhecida apenas pela Microsoft.
fonte
O Kerberos é necessário se você precisar se passar por um usuário para acessar recursos que não estão no servidor iis.
fonte