Я пытаюсь добавить поддержку единого входа Active Directory к существующему серверу SOAP. Сервер можно настроить для приема доверенного обратного прокси и использования HTTP-заголовка X-Remote-User для аутентифицированного пользователя. Я хочу настроить IIS в качестве доверенного прокси для этой службы, чтобы он обрабатывал всю аутентификацию Active Directory для сервера SOAP.
В основном IIS должен будет принимать HTTP-соединения через порт X и URL Y, выполнять всю аутентификацию, а затем проксировать соединение на другой сервер (скорее всего, те же X и Y).
К сожалению, я ничего не знаю о IIS или AD (поэтому я изо всех сил стараюсь выучить достаточно, чтобы построить это решение), поэтому будьте осторожны. Я предполагаю, что это не редкость, так что есть какой-нибудь простой способ сделать это?
Встроены ли такие функции в IIS или мне нужно самому создать какую-то прокси-программу IIS?
Есть ли лучший вариант для выполнения аутентификации и установки HTTP-заголовка X-Remote-User, чем требовать IIS?
Обновить:
Например, я пытаюсь создать:
[CLIENT] [IIS] [AD] [SOAP-SERVER]
1. |---------------->|
2. |<--------------->|<---------->|
3. |--------------------------->|
4. |<---------------------------|
5. |<----------------|
1. POST to http://example.com/foo/bar.cgi
2. Client is not authenticated, so do authentication
3. Once validated, send request to server (X-Remote-User: {userid})
4. Process request, send response
5. Forward response to client
Мне нужно знать, как настроить IIS для автоматической аутентификации пользователя с помощью AD, а затем для прокси-запроса на фактический сервер, отправляя идентификатор пользователя в HTTP-заголовке X-Remote-User.
Самое простое решение - использовать ISA-сервер (или Forefront TMG) в качестве обратного прокси-сервера для веб-сайта. Вы можете настроить правило ISA для веб-сайта для аутентификации доступа пользователей через AD.
Вы также можете управлять заголовками хоста с сайта и должны иметь возможность достичь желаемого с помощью параметров политики HTTP для правила веб-сайта.
Я не верю, что требуемые функции доступны в IIS.
Подобно тому, как Apache может делать аналогичные вещи с модулями, IIS может делать то же самое, однако в нем изначально ничего не встроено, что допускает обратное поведение прокси.
Вы можете получить некоторое поведение, подобное обратному прокси, с помощью перезаписи URL-адресов и модулей маршрутизации запросов приложений. Я не знаю, удастся ли вам дойти до изменения заголовков. См. Это сообщение в блоге для получения дополнительной информации: http://blogs.iis.net/wonyoo/archive/2008/07/09/application-request-routing-arr-as-a-reverse-proxy.aspx
Вы также можете развернуть собственный код, который работает аналогично. См. В этой статье образец реализации, хотя ваши результаты могут быть не совсем такими, как вы ожидаете - на самом деле это более сложная проблема, чем простое смещение битов по сети через посредника: http://www.codeproject.com/KB/web-security/HTTPReverseProxy.aspx
На самом деле для обратного проксирования вы должны смотреть на ISA-сервер, чтобы придерживаться платформы MS.
Я бы рекомендовал взглянуть на запущенные службы федерации Active Directory. Он может обеспечивать единый вход.