SPNEGO가 지원되었지만 NTLM이 HTTP 요청을위한 것이 아니라는 것을 고객에게 표시 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/489950

문제

Microsoft가 내가 현재 알고있는 것을 사용하는 두 가지 WWW Authenticate 추가

  • NTLM
  • 협상

협상이 서버에서 전송되면 일련의 조건에 따라 Kerberos가 사용됩니다.

  • 인트라넷 구역
  • 호스트 이름을 사용하여 IP보다 서버에 액세스하십시오
  • IE의 통합 Windows 인증이 활성화되어 있으며 호스트는 Firefox를 신뢰합니다.
  • 서버는 브라우저에 로컬이 아닙니다
  • 클라이언트의 Kerberos 시스템은 도메인 컨트롤러에 인증됩니다.

그런 다음 Kerberos는 서버와 클라이언트간에 시도됩니다. 위의 내용이 충족되지 않으면 NTLM을 시도합니다.

내 질문은 서버가 NTLM을 보내지 않아야한다는 것을 나타내는 방법이 있습니까? 나는 현재 세션의 요청을 추적하여이를 처리하며 NTLM 메시지가 수신되면 해당 세션의 나머지 부분에 대해 Kerberos 및 WWW Authenticate가 비활성화됩니다.

도움이 되었습니까?

해결책

처음의 WWW-Authenticate 헤더 만 지정합니다 negotiate. 더 이상 아무 말도 할 수 없습니다 "NTLM 없음".

첫 번째 인증에 응답 할 수 있다고 생각합니다. {Base64 NTLMSSP} 클라이언트가 보낸 헤더 401 unauthorized 그리고 두 번째 Negotiate 응답 토큰을 포함 할 수있는 헤더, 아마도 SupportedMechanisms Kerberos 만 지정합니다.

그러나 나는 그것이 당신을 얻을 것이라고 생각합니다 "unauthorized", 처음에 NTLM으로 돌아 왔기 때문에.

다른 팁

그래 넌 할수있어. 살펴보십시오 참조 문서 SPNEGO HTTP Servlet 필터 프로젝트.

(적어도 이론적으로) 예. 즉, 적절한 SPNEGO ASN.1 캡슐화없이 Kerberos 토큰을 보내는 것과 같은 완전히 이상한 일을 할 수 있지만, 다른 주제입니다. 준수하는 스페고에서 (http://tools.ietf.org/html/rfc4178#section-4.1) 구현을 할 수 있습니다.

Negtokeninit Mechtypes 멤버를 조작하여 Kerberos 만 포함하여 클라이언트가 Kerberos를 보내거나 인증하지 못하는 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top