Posso indicar aos clientes que SPNEGO é suportado mas NTLM não é para solicitações HTTP?
-
20-08-2019 - |
Pergunta
As duas adições WWW-Authenticate Microsoft faz uso de que eu estou atualmente ciente são
- NTLM
- Negociar
Se Negociar é enviado a partir do servidor, com base em um conjunto de condições Kerberos será usado
- Zona Intranet
- Acesso ao servidor usando um nome de host em vez de IP
- Autenticação integrada do Windows no IE está habilitado, o anfitrião é confiável no Firefox
- O servidor não é local para o navegador
- sistema Kerberos do cliente é autenticado para um controlador de domínio
Em seguida, Kerberos será tentada entre o servidor eo cliente, se algo acima não for cumprida, então NTLM será tentada.
A minha pergunta é, existe alguma maneira para o servidor para indicar que NTLM não devem ser enviados? Eu atualmente lidar com isso, mantendo o controle do pedido na sessão, e se uma mensagem NTLM é recebido, ele desabilita o Kerberos e WWW-Authenticate para o resto de que a vida sessões.
Solução
O cabeçalho WWW-Authenticate
inicial especifica apenas negotiate
. Não posso dizer mais nada, como "não NTLM" .
Eu acho que é possível para responder à primeira Authenticate: {Base64 NTLMSSP} cabeçalho enviado pelo cliente com 401 unauthorized
e um cabeçalho segunda Negotiate
, que pode incluir um sinal de resposta, possivelmente incluindo um SupportedMechanisms
que especifica Kerberos Só
Mas eu suspeito que só vai chegar "unauthorized"
, porque estava caindo de volta para NTLM em primeiro lugar.
Outras dicas
Sim, pode. Dê uma olhada na documentos de referência do projeto Filtro SPNEGO HTTP Servlet.
Você pode fazer isso, (pelo menos em teoria) sim. IE pode fazer coisas totalmente estranho como o envio de Kerberos Tokens sem o encapsulamento SPNEGO ASN.1 apropriado, mas bem, isso é um tópico diferente. Em um SPNEGO conformes ( http://tools.ietf.org/html/rfc4178#section -4.1 ) Implementação você poderia fazer isso.
Se você pode manipular o membro mechTypes NegTokenInit para conter apenas Kerberos ele força o cliente para enviar Kerberos ou deixar de autenticação.