Пассивная федерация WIF с настраиваемым балансировщиком нагрузки - PullRequest
0 голосов
/ 22 марта 2012

Я реализую простой балансировщик нагрузки - это прослушиватель http, который анализирует входящие запросы из браузера и направляет их в соответствующее приложение ASP.NET.Он прослушивает определенный порт (8801) и при маршрутизации сохраняет исходный URI и изменяет только номер порта, например, https://machine.domain.com:8801/testsite/Default.aspx может быть направлен на https://machine.domain.com:8811/testsite/Default.aspx

. Без маршрутизации безопасности работает нормально,Проблема возникает, когда я пытаюсь применить федерацию WIF к приложениям ASP.NET.Я использую ADFS 2.0.Вот два сценария, которые я попробовал:

сценарий 1

пассивной конечной точке WS-федерации проверяющей стороны задано значение URI приложения ASP.NET

Когда URI балансировщика нагрузки доступен через браузер, балансировщик нагрузки направляется в приложение ASP.NET, и страница загружается, однако RequestSecurityTokenResponse из STS перенаправляется непосредственно в приложение ASP.NET (не балансировщик нагрузки) в соответствии с установленной пассивной конечной точкой.Так что это работает, но так как я хочу, чтобы весь обмен данными с приложением ASP.NET обрабатывался через балансировщик нагрузки, этот сценарий не соответствует моему требованию.

сценарий 2

WS- проверяющей стороныПассивная конечная точка федерации настроена на URI балансировщика нагрузки

Когда доступ к URI балансировщика нагрузки осуществляется через браузер, балансировщик нагрузки направляется в приложение ASP.NET, которое возвращает несанкционированный ответ, браузер перенаправляет на STS, RequestSecurityTokenResponse перенаправляется обратнобалансировщик нагрузки, но при дальнейшей маршрутизации в приложение ASP.NET я получаю ответ 401 - Несанкционированный: доступ запрещен из-за неверных учетных данных.Это связано с несоответствием URI, так как токен saml выдан для URI балансировщика нагрузки.Я пробовал различные комбинации пользователей и областей аудитории, но безуспешно.

Поэтому мой вопрос заключается в том, существует ли обходной путь, позволяющий балансировщику нагрузки обрабатывать все необходимые сообщения федерации, поскольку к моим приложениям ASP.NET можно получить доступ только толькоот балансировщика нагрузки.

Надеюсь, я достаточно ясно объяснил свою проблему.

Помощь очень ценится Спасибо

Ответы [ 2 ]

1 голос
/ 28 марта 2012

В конце концов проблема была где-то еще. На самом деле мой балансировщик нагрузки преобразовывает входящий HttpListenerRequest в новый HttpWebRequest, который затем перенаправляется в соответствующее приложение ASP.NET. Однако я не отключил автоматическое перенаправление для перенаправленного запроса, поэтому происходило перенаправление из приложения ASP.NET в ADFS. Этот код сделал волшебство:

HttpWebRequest.AllowAutoRedirect = false;

0 голосов
/ 23 марта 2012

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

<federatedAuthentication>
    <wsFederation passiveRedirectEnabled="true" issuer="https://mysts.com/v2/wsfederation" realm="https://machine.domain.com:8801/testsite/Default.aspx" requireHttps="false" />
    <cookieHandler requireSsl="false" />
</federatedAuthentication>

Также еще одна проблема, которую вам следуетзнать о том, является ли сеанс cookie.WIF по умолчанию использует DPAPI для шифрования, поэтому вместо этого вам придется использовать RsaEncryptionCookieTransform.Та же проблема существует при использовании WIF в Azure.Вот статья, которая демонстрирует, как это делается:

http://msdn.microsoft.com/en-us/library/windowsazure/hh289318.aspx

...