2008-10-09 32 views
5

WCF'ye özel bir proxy adresi ve özel kimlik bilgileri vermek mümkün mü?WCF Özel Http Proxy Kimlik Doğrulaması

Bu yanıtı stackoverflow üzerinde buldum: How to set proxy with credentials to generated WCF client?, ama bir komplikasyon var, karşı kimlik doğrulaması yaptığım hizmet kendi kimlik doğrulamasını kullanıyor, yani iki kimlik bilgisi kullanmam gerekiyor proxy aracılığıyla ve diğeri hizmete karşı kimlik doğrulaması yapmak için)

Hizmet kimlik bilgilerini sağlamak için diğer soruya verilen yanıtlarda açıklanan tekniği kullanıyorum. Örneğin.

client.ClientCredentials.UserName.UserName = username; 
client.ClientCredentials.UserName.Password = password; 

Böyle bir şey kullanarak proxy adresi ayarlayabilirsiniz:

(client.Endpoint.Binding as WSHttpBinding).ProxyAddress = ...; 

nasıl etkili bir kimlik iki grup nedir ayarlarım? (NB: Proxy ve gerçek hizmetin kimlik bilgileri farklıdır!) Ayrıca, proxy ayrıntılarının mutlaka varsayılan sistem proxy ayrıntıları olmadığına dikkat edin.

cevap

13

Eğer kimlik bilgileriyle yeni webproxy için WebRequest.DefaultWebProxy özelliği ayarlamak, WCF yapar tüm HTTP istekleri için kullanacağız. (Açıkça geçersiz kılınmadığı sürece bu uygulama tarafından kullanılan tüm HttpWebRequests etkileyecektir).

// get this information from the user/config file/etc. 
Uri proxyAddress; 
string userName; 
string password; 

// set this before any web requests or WCF calls 
WebRequest.DefaultWebProxy = new WebProxy(proxyAddress) 
{ 
    Credentials = new NetworkCredential(userName, password), 
}; 

benim blog post on proxy servers başka ayrıntıları içerir.

+0

Bir hizmet alıyorum. Servis, kullanıcı adı ve şifre kullanılarak doğrulanır. Proxy adresini ve kimlik bilgilerini nasıl alabiliriz? – Lijo

+0

belirtildiği gibi varsayılan vekil kullanıldığında ben 502 Hatalı Ağ Geçidi http://stackoverflow.com/questions/10807134/azure-service-bus-relay-502-bad-gateway-after-service-restart alıyorum http://social.msdn.microsoft.com/Forums/tr-TR/wcf/thread/5f8d2c3a-164f-411a-b387-91f0be51f190/ – Lijo

+0

Bunu, kimlik bilgimiz olmadan uç noktamıza erişim izni vermek için bir proxy hariç tutma kuralına sahip olduğumuz sorunumuz için temel olarak kullandık. WCF, proxy'ye karşı mesaj kimlik bilgilerini kullanmaya çalıştığı için özel bir doğrulayıcıya sahiptir. Çözümüm, 'Credentials = yeni NetworkCredential (kullanıcıAdı, parola)' 'UseDefaultCredentials = true' ile değiştirmekti. Bu, WCF'nin proxy'ye kimlik bilgisi göndermemesine ve kullanıcı adı/parolayı messgae'ye geçirmesine neden olur. Korku veren! Teşekkür ederim! – Shevek

2

Ayarladığınız istemci kimlik bilgileri, hizmetlerinizi doğrulamak için iyidir.
Proxy kimlik doğrulaması için HttpTransportSecurity.ProxyCredentials kullanmanız gerekir.

Bu bağlantı size yardımcı olabilir. Benim cevap sözlerinden

http://msdn.microsoft.com/en-us/library/system.servicemodel.httptransportsecurity.proxycredentialtype.aspx

+0

Ye, onu gördüm. sorun proxy için adımı/şifremi ayarlamak için hiçbir yerde bulamadığım yani kimlik doğrulama türleri sadece bir enum ... – Gareth

+1

I have not şu denedim ama gördüğüm gibi, varsayılan proxy kimlik bilgilerinizi almanız için ayarlayabiliyorsunuz. – sebagomez

+0

çok hızlı yazdım :) Hiç denemedim, ama gördüklerim için ... – sebagomez

1

Ben hizmet kimlik doğrulama ve http proxy için farklı kimlik bilgileri olması mümkün değildir sanırım.

bu berbat! :(

+0

ye. Oh iyi. "Varsayılan sistem proxy'sini kullan" veya "Proxy kullan" seçeneğini seçiyoruz ... Yardımlarınız için teşekkürler! – Gareth

+0

Tam olarak! Bunu kontrol edin: http://kennyw.com/indigo/106 Hoşçakal –

İlgili konular