ITfoxtec SAML с веб-серверами с балансировкой нагрузки - PullRequest
0 голосов
/ 20 ноября 2018

Мы используем библиотеку ITfoxtec.Identity.Saml2 для аутентификации с помощью нашего единого входа. оказание услуг.

Проблема в том, что мы используем это на серверах с балансировкой нагрузки. Если мы отключаем липкие сессии, приложение больше не работает.

Я пытался установить isPersistent = true при создании сеанса, но это никак не повлияло. Я видел похожие проблемы, связанные с хранением состояния SAML в веб-ферме, с предложениями в диапазоне:

Изменение конфигурации, чтобы все серверы в веб-ферме использовали один и тот же ключ компьютера. Создание того, что составляет государственную службу для хранения аутентификации.

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

Любые предложения о том, как атаковать это?

1 Ответ

0 голосов
/ 20 ноября 2018

Используя ITfoxtec.Identity.Saml2.Mvc и ASP.NET MVC, isPersitent является параметром метода CreateSession.Метод CreateSession , используемый в примере приложения ASP.NET .

Метод вызывается после того, как ответ SAML 2.0 принят для создания файла cookie идентификации пользователя, обрабатываемогоSessionAuthenticationModule.

По умолчанию файлы cookie идентификации пользователя не являются постоянными.Установка isPersitent=true приводит к созданию постоянных файлов cookie идентификации пользователя.Параметр isPersitent не имеет ничего общего с балансировкой нагрузки.

Должна быть предусмотрена возможность поддержки балансировки нагрузки путем установки isReferenceMode=true.Эталонный режим изменяет cookie-файлы идентификатора пользователя с автономного на указатель.

В эталонном режиме во время сериализации создается простой артефакт, а материал токена сохраняется в кеше токена, который связан собработчик токена.Кэш токена является экземпляром класса, производным от SessionSecurityTokenCache.Для сценариев веб-фермы кэш токена должен работать на всех узлах фермы.

Возможно, вам необходимо реализовать кэш токена.

Обновлено:

Прошу прощения за то, что у меня нет примера.Вместо этого я добавил несколько ссылок, которые могут быть полезными.

WIF и веб-фермы

О SessionAuthenticationModule IsReferenceMode

SessionSecurityTokenCache Class

...