2008-10-09 2 views
5

Возможно ли предоставить WCF собственный адрес прокси и пользовательские учетные данные?WCF Пользовательская проверка подлинности Http

Я нашел этот ответ в stackoverflow: How to set proxy with credentials to generated WCF client?, но у меня есть осложнение, служба, с которой я аутентифицируюсь, использует свою собственную аутентификацию, поэтому мне нужно использовать два набора учетных данных (один для получения через прокси, а другой для аутентификации против службы)

Я использую метод, описанный в ответах на другой вопрос, чтобы предоставить учетные данные службы. например

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

Я могу установить адрес прокси-сервера, используя что-то вроде этого:

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

Как установить, что фактически два набора учетных данных? (NB: учетные данные для прокси-сервера и фактического сервиса разные!) Также обратите внимание, что данные прокси-сервера не обязательно являются данными прокси-сервера по умолчанию.

ответ

13

Если установить WebRequest.DefaultWebProxy свойство нового WebProxy с учетными данными, WCF будет использовать его для всех HTTP-запросов, которые он делает. (Это будет влиять на все HttpWebRequests, используемые приложением, если явно не переопределяется).

// 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), 
}; 

мой blog post on proxy servers содержит дополнительные подробности.

2

Учетные данные клиента, которые вы настраиваете, подходят для аутентификации ваших услуг.
Для прокси-аутентификации вам необходимо использовать HttpTransportSecurity.ProxyCredentials.

Эта ссылка может помочь вам.

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

+0

Е., я увидел, что. Проблема заключается в том, что я не могу найти где-нибудь, чтобы установить свое имя пользователя/пароль для прокси-сервера, то будет только перечисление типов аутентификации ... – Gareth 2008-10-09 13:24:13

+1

Я не имею но я видел, что вы можете настроить его на учетные данные прокси-сервера по умолчанию, которые вы установили в IE – sebagomez 2008-10-09 13:45:52

+0

слишком быстро набрал :) Я не пробовал, но за то, что увидел ... – sebagomez 2008-10-09 14:01:24

1

Из комментариев к моему ответу, я предполагаю, что это не возможно, чтобы иметь различные учетные данные для проверки подлинности службы и HTTP-прокси.

это suck! :(