Можно ли указать учетные данные прокси в вашем web.config?
Мне нужно настроить веб-сайт для доступа к веб-сервису на другой машине через прокси-сервер. Я могу настроить веб-сайт для использования прокси-сервера, но я не могу найти способ указать учетные данные, которые требуется прокси-серверу, возможно ли это? Вот моя текущая конфигурация:
<defaultProxy useDefaultCredentials="false">
<proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>
Я знаю, что вы можете сделать это с помощью кода, но программное обеспечение, на котором работает веб-сайт, является CMS с закрытым исходным кодом, поэтому я не могу этого сделать.
Есть ли способ сделать это? MSDN не очень помогает мне.
Ответы
Ответ 1
Да, вы можете указать свои собственные учетные данные без изменения текущего кода. Для этого требуется небольшая часть кода из вашей части.
Создайте сборку под названием SomeAssembly.dll с помощью этого класса:
namespace SomeNameSpace
{
public class MyProxy : IWebProxy
{
public ICredentials Credentials
{
get { return new NetworkCredential("user", "password"); }
//or get { return new NetworkCredential("user", "password","domain"); }
set { }
}
public Uri GetProxy(Uri destination)
{
return new Uri("http://my.proxy:8080");
}
public bool IsBypassed(Uri host)
{
return false;
}
}
}
Добавьте это в свой конфигурационный файл:
<defaultProxy enabled="true" useDefaultCredentials="false">
<module type = "SomeNameSpace.MyProxy, SomeAssembly" />
</defaultProxy>
Это "внедряет" новый прокси-сервер в список, и поскольку нет учетных данных по умолчанию, класс WebRequest сначала вызовет ваш код и запросит ваши собственные учетные данные. Вам нужно будет поместить сборку SomeAssembly в каталог bin вашего приложения CMS.
Это как-то статический код, и для получения всех строк, таких как пользователь, пароль и URL, вам может потребоваться реализовать собственный ConfigurationSection или добавить некоторую информацию в AppSettings, что намного проще.
Ответ 2
Пока я не нашел хорошего способа указать учетные данные прокси-сети в файле web.config, вы можете обнаружить, что вы все еще можете использовать некодирование, включив это в свой web.config:
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy proxyaddress="proxyAddress" usesystemdefault="True"/>
</defaultProxy>
</system.net>
Ключевым компонентом этого процесса является изменение параметров IIS, обеспечивающих доступ к прокси-серверу учетной записи, которая запускает процесс.
Если ваш процесс запущен под LocalService или NetworkService, то это, вероятно, не сработает. Скорее всего, вам понадобится учетная запись домена.
Ответ 3
Вы можете указать учетные данные, добавив новый общий учетный ключ вашего прокси-сервера в диспетчере учетных данных Windows:
1 В Web.config
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy usesystemdefault="True" />
</defaultProxy>
</system.net>
- В Credential Manager → Добавить общий учет
Интернет или сетевой адрес: адрес прокси-сервера
Имя пользователя: ваше имя пользователя
Пароль: вы проходите
Эта конфигурация работала для меня, без изменения кода.
Ответ 4
Службы каталогов /LDAP могут использоваться для этой цели. Это связано с некоторыми изменениями на уровне инфраструктуры, но большинство производственных сред имеют такое положение