Windows kimlik doğrulamasıyla BasicHttpBinding kullanarak bir WCF hizmetim var. Çoğu istemci etki alanı hesabıdır ve varsayılan kimlik bilgilerini kullanarak servise bağlanır.WCF istemci yapılandırma dosyasında Windows kimlik bilgileri nasıl belirtilir
Şimdi yerel bir hesap altında çalışan bir ASP.NET istemcisinden servise bağlanmak istiyorum. ASP.NET uygulamasında kullanılabilen windows kimlik bilgilerini (etki alanı \ kullanıcı ve parola) kullanarak WCF hizmetine bağlanmak istiyorum.
Bunu, ClientBase < T> .ClientCredentials kullanarak kodda yapabilirim.
İstemcinin web.config dosyasında kimlik bilgilerini (etki alanı \ kullanıcı ve parola) belirtmenin bir yolu var, bu yüzden kodu değiştirmek zorunda kalmam.
DÜZENLEME
o yapılandırma dosyasında yapılamaz ise, WCF hizmeti için bir kimlik olarak System.Net.ICredentials veya System.Net.NetworkCredential kullanmanın bir yolu var mı?
.NET Framework, ağ kimlik bilgilerini sağlamak için homojen bir yol olarak bunları sağlar, ancak WCF ile ilgisiz System.ServiceModel.Description.ClientCredentials sınıfını temel alan yeni bir uyumsuz sistem lehine atılmış gibi görünüyor.
DÜZENLEME 2
asıl soruya Marc'ın cevabını kabul etmek - istemci yapılandırma dosyası :(
Ben WCF bir eksiklik olarak görecekti bunu yapmanın bir yolu yoktur görünüyor - Microsoft'un yapılandırma dosyasında kimlik bilgilerini koymamızı engellemesini kabul etmiyorum - hepsi bir yerde saklanmak zorunda olduktan sonra, ve Çerçeve yapılandırma dosyasını şifrelemek için gereken olanakları içeriyor. Bunun için özel bir BehaviorExtensionElement oluşturabilirim sanırım Ancak, kutudan çıkmış olması gerekir
Ayrıca biraz tutarsız: system.net/mailSettings/smtp/network yapılandırma öğesi kimlik bilgilerinin belirtilmesine izin veriyor, bu yüzden neden WCF değil? System.Net.NetworkCredential kullanma konusunda ikinci soru ile ilgili olarak
, bunun en azından aşağıdaki kodla Windows kimlik doğrulaması kullanılırken, mümkün this blog dan görünüyor:
factory.Credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(name, password, domain);
eklemek "... senin yapılandırma dosyasında, düz metin olarak" genel olarak iyi bir şey değil, ama şifreli yapılandırma dosyasında sorun yok. – Joe
@marc_s Konfigürasyon dosyası aracılığıyla ayarlanamıyor mu? –
@Johnny_D: hayır, bildiğim kadarıyla değil. –