Можно ли указать учетные данные прокси в вашем web.config?

Мне нужно настроить веб-сайт для доступа к веб-сервису на другом компьютере через прокси. Я могу настроить веб-сайт для использования прокси-сервера, но я не могу найти способ указать учетные данные, которые требуются для прокси-сервера, возможно ли это? Вот моя текущая конфигурация:

<defaultProxy useDefaultCredentials="false">
    <proxy usesystemdefault="true" proxyaddress="<proxy address>" bypassonlocal="true" />
</defaultProxy>

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

Есть какой-либо способ сделать это? MSDN мне мало помогает..


person spmason    schedule 09.10.2008    source источник


Ответы (4)


Да, можно указать свои учетные данные без изменения текущего кода. Однако для этого требуется небольшой фрагмент кода с вашей стороны.

Создайте сборку с именем 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, что гораздо проще.

person Jérôme Laban    schedule 11.10.2008
comment
Я собираюсь отметить это как ответ, потому что похоже, что это должно работать, но у меня все еще есть проблемы с подключением, которые, похоже, больше всего связаны с ISA Server. - person spmason; 14.10.2008
comment
Мы не должны делать +1 и т. д., но это действительно простое и элегантное решение! - person Nick Patsaris; 17.12.2014
comment
Любая идея, как передать учетные данные в сборку? Я не хочу жестко кодировать эту информацию, поскольку пользователи должны иметь возможность изменить ее позже без перекомпиляции кода. - person F.H.; 14.11.2018

Хотя я не нашел хорошего способа указать учетные данные прокси-сети в web.config, вы можете обнаружить, что все еще можете использовать решение без кодирования, включив это в свой web.config:

  <system.net>
    <defaultProxy useDefaultCredentials="true">
      <proxy proxyaddress="proxyAddress" usesystemdefault="True"/>
    </defaultProxy>
  </system.net>

Ключевым элементом для достижения этой цели является изменение настроек IIS, обеспечивающее доступ учетной записи, которая запускает процесс, к прокси-серверу. Если ваш процесс выполняется под LocalService или NetworkService, то это, вероятно, не сработает. Скорее всего, вам понадобится учетная запись домена.

person Scott Ferguson    schedule 17.05.2009

Вы можете указать учетные данные, добавив новые общие учетные данные вашего прокси-сервера в диспетчере учетных данных Windows:

1 В Web.config

<system.net>    
<defaultProxy enabled="true" useDefaultCredentials="true">      
<proxy usesystemdefault="True" />      
</defaultProxy>    
</system.net>
  1. В Панели управления\Все элементы панели управления\Диспетчер учетных данных ›› Добавьте общие учетные данные

Интернет или сетевой адрес: ваш прокси-адрес
Имя пользователя: ваше имя пользователя
Пароль: вы проходите

Эта конфигурация работала для меня без изменения кода.

person Silas Humberto Souza    schedule 26.06.2015
comment
Панель управления\Все элементы панели управления\Диспетчер учетных данных - person jerone; 28.01.2018
comment
У меня работает за прокси Microsoft ISA - person Hintham; 28.06.2019

Для этой цели можно использовать службы каталогов/LDAP. Это включает в себя некоторые изменения на уровне инфраструктуры, но в большинстве производственных сред есть такая возможность.

person questzen    schedule 09.10.2008
comment
Я понятия не имею, как это может помочь. Серверы не находятся в одном домене, если это имеет значение. - person spmason; 09.10.2008