2009-01-28 23 views
6

Hai bổ sung WWW-Authenticate Microsoft đưa ra sử dụng mà tôi đang nhận thức được làTôi có thể chỉ ra cho khách hàng rằng SPNEGO được hỗ trợ nhưng NTLM không dành cho các yêu cầu HTTP?

  • NTLM
  • Negotiate

Nếu Negotiate được gửi xuống từ máy chủ, dựa trên một tập hợp điều kiện Kerberos sẽ được sử dụng

  • Intranet Zone
  • Truy cập máy chủ sử dụng một Hostname thay vì sau đó IP
  • Integrated Windows Authentication trong IE được kích hoạt, chủ nhà là đáng tin cậy trong Firefox
  • Server không phải là địa phương để trình duyệt
  • hệ thống Kerberos của khách hàng được xác thực với một domain controller

Sau đó Kerberos sẽ được cố gắng giữa máy chủ và ứng dụng khách, nếu một thứ gì đó ở trên không được đáp ứng, khi đó NTLM sẽ được thử.

Câu hỏi của tôi là, có cách nào để máy chủ chỉ ra rằng NTLM không được gửi? Tôi hiện đang xử lý việc này bằng cách theo dõi yêu cầu trong phiên và nếu nhận được thông báo NTLM, nó sẽ vô hiệu hóa Kerberos và WWW-Authenticate cho phần còn lại của phiên đó.

+0

Bạn có tắt NTLM do sự cố ủy quyền không? –

+0

Không, nó chỉ đơn giản là một cái gì đó tôi hiện không hỗ trợ trong plugin Tomcat JAAS tôi đã thực hiện. Nó chỉ hỗ trợ Kerberos/SPNEGO. –

Trả lời

2

Đầu đề WWW-Authenticate ban đầu chỉ quy định negotiate. Nó không thể nói gì thêm, chẳng hạn như "no NTLM".

Tôi nghĩ rằng nó có thể để đáp ứng các Authenticate đầu tiên: {Base64 NtLmSsp} tiêu đề gửi của khách hàng với 401 unauthorized và một giây Negotiate tiêu đề, trong đó có thể bao gồm một mã thông báo phản ứng, có thể bao gồm một SupportedMechanisms mà xác định Kerberos Chỉ.

Nhưng tôi nghi ngờ rằng sẽ chỉ nhận được bạn "unauthorized", bởi vì nó đã giảm trở lại NTLM ở nơi đầu tiên.

+0

Tôi sẽ xem xét điều này. Hầu hết các trường hợp Kerberos/SPNEGO bị hạ cấp tôi đã thấy vì Kerberos không hoạt động trong môi trường Windows hoặc cấu hình sai môi trường đó. Có một số yêu cầu rất tùy ý và không có giấy tờ IE phải làm Kerberos trên NTLM. –

+0

@ScottMarkwell Tôi đã nhận thấy như vậy, nhưng nó sẽ là tốt đẹp để có được IE để nhắc cho các thông tin và thậm chí có thể nhận được một vé dịch vụ trực tiếp thay vì đi xuống các tuyến đường dự phòng NTLM. – davenpcj

1

Bạn có thể làm điều đó, (ít nhất theo lý thuyết) có. IE có thể làm những thứ hoàn toàn kỳ lạ như gửi các thẻ Kerberos mà không có gói đóng gói SPNEGO ASN.1 thích hợp, nhưng tốt, đó là một chủ đề khác. Trong một SPNEGO phù hợp (http://tools.ietf.org/html/rfc4178#section-4.1) Triển khai, bạn có thể thực hiện điều đó.

Nếu bạn có thể thao tác thành viên mechTypes NegTokenInit chỉ chứa Kerberos, nó buộc khách hàng gửi Kerberos hoặc không xác thực.

+0

Vấn đề chung là Micorsoft trộn SPNEGO/GSS-API với chức năng NTLM hiện có của chúng. Vì vậy, bạn không được đảm bảo một cuộc đàm phán thực tế. –

3

Có thể. Hãy xem reference docs của dự án Bộ lọc Servlet HTTP SPNEGO.

+0

Tôi thực sự chỉ lo lắng về cấp độ giao thức của giao thức HTTP/WWW-Authenticate. Tôi thực sự đã triển khai thực hiện của riêng mình. Cảm ơn mặc dù đã liên kết với dự án này, vì tôi không biết ai đó cũng đã xây dựng một giải pháp (có vẻ như nó đã truy cập sourceforge ~ 2 tuần trước) –

Các vấn đề liên quan