Проверяющая сторона в сценарии веб-фермы (IsSessionMode = true)
Во-первых, я должен был установить IsSessionMode = true, чтобы уменьшить размер файла cookie.
Мне нужно сбалансировать 2 экземпляра RP Я сделал следующие шаги на 2 разных машинах с экземплярами RP:
1) Подписан на событие ServiceConfigurationCreated
private void WSFederationAuthenticationModule_ServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
{
X509Certificate2 certificate = CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, ConfigHelper.FrontendCertificate);
var sessionTransforms = new List<CookieTransform>(new CookieTransform[]
{
new DeflateCookieTransform(),
new RsaEncryptionCookieTransform(certificate),
new RsaSignatureCookieTransform(certificate)
});
SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());
e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
}
2) забрал сессию в госслужбу asp.net
Проблема:
Когда я пытаюсь войти в систему STS, я получаю бесконечное перенаправление с RP на STS
Я не могу понять почему. Токен хранится в сеансе (IsSessionMode = true). Служба состояний asp.net разделяет сеанс между двумя разными хостами.
В чем проблема? Что я упустил?
Я думаю, что я не понимаю что-то важное.
1 ответ
Мое предположение заключается в том, что WIF просто не может установить сеанс на стороне RP, и пользователь попадает на несанкционированную страницу (возможно, на страницу с пользовательской ошибкой?), Которая предлагает WIF перенаправить обратно на STS для аутентификации, и теперь вы Зацикливаемся.
Некоторые эксперименты, которые вы можете попробовать:
Отключите IsSessionMode = false и посмотрите, не возникла ли проблема. Если это не так, то вы знаете, что WIF задыхается при создании сеанса, и вы можете проверить, чтобы убедиться, что ваш RP успешно связывается со службой состояний ASP.NET, например.
Установите Fiddler (http://fiddler2.com/fiddler2/), который является бесценным инструментом для отладки таких бесконечных перенаправлений. Соберите несколько следов, посмотрите, что происходит. Вы также можете рассмотреть возможность размещения вашего RP web.config.