Лайфхаки

Маленькие, полезные хитрости

Добавление прокси в любое приложение на IIS +9

09.03.2023 в 16:35

Добавление прокси в любое приложение на IIS +9

В корпоративной среде часто возникает необходимость в веб-приложении на asp.net реализовать возможность выхода через прокси сервер (даже с авторизацией) для скачивания той или иной информации.Например:

  • Реализуемое ПО требует на уровне приложения-сервера скачивать с веб ресурсов ту или иную информацию
  • При размещении любой CMS требуется возможность для подключения приложения к репозиторию разработчиков для скачивания тем, плагинов и т.п. (некоторые CMS вообще не устанавливаются без предварительной авторизации на стороне сервера разработчиков)
  • В SharePoint есть множество сервисов, которые требуют прямого подключения к сайтам Microsoft (пример подключение к office.com для установки внешних приложений)

Рассмотрим 2 ситуации, ориентируясь на статью:

1) Корпоративный прокси не требует авторизации

В web.config добавляем раздел defaultProxy с указанием прокси сервера.

Подробнее + код

Убедитесь в том, что вы добавляете данный раздел в раздел configuration и также после подраздела configSections, если он присутствует. Для параметра proxyaddress укажите правильный адрес вашего прокси.

2) Корпоративный прокси требует авторизации

2.1) Авторизуем сервер (кардинальный подход, не всегда удобен и менее безопасен). В данном варианте используются такие же настройки в web.config, как в пункте 1), но также необходимо, чтобы администраторы прокси предоставили доступ для сервера по его ip адресу для определенных веб-ссылок или на весь интернет. Учтите, что часто очень сложно определить, на какие же ссылки пытается получить доступ CMS или SharePoint server.
2.2) Модуль авторизации для веб-приложения
Если обратить пристальное внимание на ту же статью вто для раздела defaultProxy можно указать дополнительный подраздел module .Это очень важный раздел, который позволяет создать свой ( легко встраиваемый ) код доступа к прокси серверу. При этом нет необходимости редактировать код самого приложения.

Подробнее + код + картинки

  • В visual studio cоздайте новую библиотеку MyCorpAssembly.dll net 2.0 (чтобы запускалась и в старых сайтах) :
  • Переименуйте класс в MyCorpProxy :
  • Добавьте следующий код: Не забудьте указать свои строки для «user», «password»,«domain» и « my.proxy :8080». В данном примере пароль хранится в открытом виде, вы же можете получать и хранить его каким угодно секретным способом.
    Также лучше создать сервисную, доменную запись для авторизации.

    using System; using System.Collections.Generic; using System.Net; using System.Text; namespace MyCorpAssembly { public class MyCorpProxy : IWebProxy { public ICredentials Credentials { 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; } } }

  • Подпишите библиотеку своим ключом:
  • Скомпилируйте и положите получившийся MyCorpAssembly.dll в bin папку сайта
  • Добавьте в web.config сайта новый раздел defaultProxy:

  • Можете перезапускать приложение IIS и проверять доступность внешних ресурсов.
    Думаю, такой же функционал может работать и для приложений, написанных на .net, но я не проверял.

Arr proxy. Overview

Application Request Routing is a feature of IIS that enables you to control Internet traffic using a proxy server. A proxy server acts as a single point of contact serving clients on the request side or Web server workers on the response side. On the request side, the proxy accepts a request from one of multiple clients, and forwards it to the Internet. To the Internet the request appears to be coming from the proxy, rather than from the client. On the response side, the proxy accepts a request from the Internet, and distributes it to one of multiple workers. To the Internet the request appears to be processed and a response appears to be generated by the proxy server itself, rather than from one of the backend workers.

The first type of proxy server, the one that handles an outbound request from a client, forwards it to the Internet, and returns the generated response to the client, is called a forward proxy . The second type of proxy server, the one that handles an incoming request from the Internet, forwards it to a backend worker, and returns the response to the Internet, is called a reverse proxy .

Добавление прокси в любое приложение на IIS +9

Forward proxies and reverse proxies have significantly different functions, but they both do the same fundamental action of serving as the proxy for a requester or responder. In both cases, the proxy server isolates the private network from the Internet, enabling you to take measures to improve security. In both cases, the proxy processes requests and responses, enabling it to perform operations on the traffic that can improve performance by using caching or compression, guard against attacks, and filter information.

ARR as a Forward Proxy

When ARR serves as a forward proxy, it is part of an internal network (or intranet) of client computers. The proxy uses a URL Rewrite rule to pass requests from clients through to the Internet. ARR as a forward proxy can be used to improve bandwidth usage and performance by caching; however, it is not suitable as a full-fledged, commercial-grade forward proxy.

Note that ARR processes only HTTP traffic, not other protocols. ARR does not support the HTTP CONNECT verb, and as a result, does not support forwarding HTTPS traffic.

Добавление прокси в любое приложение на IIS +9 01

When it receives a request from one of the clients naming the target Web server, the forward proxy server processes the request as follows and forwards it through the firewall to the Internet:

  1. The forward proxy server receives the request from a client, and checks its validity.
  2. If the request is valid, ARR checks its cache to see if the response already resides there. If it finds the response, ARR returns it to the client without sending the request to the Internet.
  3. If ARR does not find the response in the cache, the proxy server sends the request through the firewall to an Internet connection, and to the content server that has the information.
  4. The forward proxy provides the following advantages:

  • Improves performance and lessens network traffic by caching information that is requested regularly (if enabled). It caches the response for the first requester, and when subsequent clients request the same content, they are given the content from the cache. The response is not requested again from the content server.
  • Supports filtering to ensure that policies are met, using URL Rewrite.