2009-04-17 30 views
8

bất cứ ai có thể đưa ra một lời giải thích rõ ràng về sự khác biệt giữa việc sử dụngSự khác nhau giữa ClientCredentialType = Windows và = NTLM

  • clientCredentialType=Windows, và
  • clientCredentialType=Ntlm

trong Web.config server-side khi tổ chức một dịch vụ WCF?

Tôi có một dịch vụ SOAP 1.1 (basicHttpBinding) cho interop với khách hàng hiện tại. Nó sử dụng các vai trò ASP.NET để nhu cầu khách hàng được xác thực.

Khi tôi đang sử dụng máy chủ VS2005 (Cassini) để lưu trữ dịch vụ, tôi phải chỉ định ClientCredentialType=Ntlm như trên và kiểm tra hộp xác thực Ntlm trong thuộc tính dự án trong VS2005. ClientCredentialType=Windows không hoạt động - khách hàng có được một:

401 lỗi Unauthorized

Tuy nhiên khi tôi đang chạy dưới IIS, đó là cách khác xung quanh: ClientCredentialType=Windows công trình, và ClientCredentialType=Ntlm thất bại.

Bất cứ ai có thể giải thích điều này và tốt nhất là đề xuất cách tôi có thể có cùng tệp web.config để chạy dịch vụ trong Cassini và IIS?

Cập nhật

Tôi có NET 3.5 SP1 trên máy dev của tôi, đó là XP SP2 chạy trong một miền. Vì vậy, Cassini chạy dưới một tài khoản miền và IIS 5.1 dưới một tài khoản cục bộ.

Tôi tự hỏi nếu nó có thể liên quan đến thay đổi đột ngột trong .NET 3.5SP1 được mô tả trong các bài viết này.

http://www.aspnetpro.com/newsletterarticle/2008/12/asp200812ab_l/asp200812ab_l.asp http://msmvps.com/blogs/alvin/archive/2008/11/14/net-3-5-sp1-breaking-change-to-wcf.aspx http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=354236

Tình hình có vẻ tương tự như clientCredentialType=Windows không thành công khi máy chủ đang chạy dưới một tài khoản miền (đó là tình hình của tôi với Cassini - chạy như tài khoản người dùng miền bình thường của tôi), và các công trình khi chạy dưới một tài khoản cục bộ (đó là tình huống của tôi với IIS).

Vấn đề là các bản sửa lỗi được đề xuất yêu cầu thay đổi đối với tệp cấu hình máy khách WCF - nhưng trong trường hợp của tôi, tôi đang sử dụng SOAP 1.1 (basicHttpBinding) với các máy khách không phải WCF.

Trả lời

1

clientCredentialType = Windows sử dụng tính năng xác thực Windows được tích hợp có thể thông qua Active Directory và NTLM.

Rõ ràng là loại NTLM sẽ chỉ sử dụng NTLM để xác thực.

tôi chắc chắn rằng bạn đã nhìn thấy nó đã có, nhưng đây là một liên kết đến WCF an ninh: http://msdn2.microsoft.com/en-us/library/ms734769.aspx

Một số chi tiết về thiết lập của bạn sẽ giúp đỡ. Các máy chủ IIS và Cassini có đang chạy trên cùng một hộp không? Nếu không, bạn có cùng thiết lập tài khoản trên mỗi hộp không? IIS6 theo mặc định hỗ trợ NTLM, vì vậy bạn không nên gặp vấn đề khi nó hoạt động.

+0

Cảm ơn. Tôi đã đọc và có một ý tưởng bề ngoài về sự khác biệt giữa NTLM và Windows. Nhưng không phải lý do tại sao Windows không hoạt động với Cassini. – Joe

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