Подтвердить что ты не робот

Как я могу доверять, что заголовки HTTP SiteMinder не были подделаны?

Я совершенно новичок в SiteMinder и SSO в целом. Я весь день просидел на веб-сайте SO и CA весь базовый пример и не могу найти его. Я не забочусь о настройке или программировании SM или что-то в этом роде. Все это уже сделано кем-то другим. Я просто хочу адаптировать мое веб-приложение JS для использования SM для аутентификации.

Я получаю, что SM добавит HTTP-заголовок с таким ключом, как SM_USER, который скажет мне, кто такой пользователь. То, чего я не понимаю, - что мешает кому-либо добавлять этот заголовок самостоятельно и полностью обходить SM? Что мне нужно включить в мой серверный код, чтобы убедиться, что SM_USER действительно пришел из SM? Я полагаю, что безопасные файлы cookie...

4b9b3361

Ответ 1

Веб-агент SM Web Agent, установленный на веб-сервере, предназначен для перехвата всего трафика и проверок, чтобы узнать, есть ли запрос ресурса...

  • Защищено SiteMinder

  • Если у Пользователя есть действительная SMSESSION (то есть Аутентифицирована)

  • Если значения 1 и 2 истинны, то WA проверяет сервер политики Siteminder, чтобы узнать, разрешен ли пользователь для доступа к запрашиваемому ресурсу.

Чтобы убедиться, что у вас нет вложений HTTP-заголовков информации о пользователе, SiteMinder WebAgent будет переписывать всю информацию заголовка HTTP-заголовка SiteMinder. По сути, это означает, что вы можете "доверять" информации SM_, которую WebAgent представляет о пользователе, поскольку он создан веб-агентом на сервере, а не частью входящего запроса.

Ответ 2

Поскольку весь трафик должен проходить через веб-агент Siteminder, даже если пользователь устанавливает этот заголовок, он будет перезаписан/удален

Ответ 3

SiteMinder r12.52 содержит новую функциональность под названием Enhanced Session Assurance с DeviceDNA ™. DeviceDNA может использоваться, чтобы гарантировать, что Cookie SiteMinder Session не подделано. Если сеанс воспроизводится на другом компьютере или из другого экземпляра brower на том же компьютере, DeviceDNA поймает это и заблокирует запрос.

Нажмите здесь, чтобы просмотреть трансляцию обсуждений новых функций в CA SiteMinder r12.52

Ответ 4

Все архитектуры Siteminder действительно делают предположение, что приложение просто должно доверять заголовкам "SM_".

На практике это может быть недостаточно в зависимости от архитектуры вашего приложения. В принципе, у вас есть 3 случая:

  • Веб-агент установлен на веб-сервере, где выполняется ваше приложение (типичный пример для приложений Apache/PHP): как указано выше, вы можете доверять заголовкам, так как никакие запросы не могут попасть в ваше приложение без фильтрации веб-агента.
  • Веб-агент установлен на другом веб-сервере, чем тот, на котором выполняется ваше приложение, но на том же компьютере (типичный случай: агент SM, установленный на интерфейсе Apache, обслуживающий сервер приложений JEE): вы должны убедиться, что никакие запросы не могут напрямую доходить до вашего сервера приложений. Либо вы привязываете сервер приложений к интерфейсу loopback, либо фильтруете порты на сервере.
  • Веб-агент работает с обратным прокси-сервером перед вашим приложением. То же замечание. Единственное решение здесь - реализовать IP-фильтр в вашем приложении, чтобы разрешать запросы, поступающие из вашего обратного прокси.

Ответ 5

Типичная корпоративная архитектура будет Webserver (агент Siteminder) + AppServer (приложения)

Говорить, что фильтрация IP не включена, а запросы веб-сайтов разрешены непосредственно в AppServer, минуя веб-сервер и sso-agent.

Если приложениям необходимо реализовать решение для утверждения заголовков/куки запросов, они не подделываются/не вводятся, есть ли какое-либо решение, аналогичное следующему?

  • Отправьте SM_USERID, зашифрованный в отдельный файл cookie или зашифрованный (Sym/Asym) вместе с идентификатором SMSESSION
  • Приложение будет использовать ключ для дешифрования SMSESSION или SM_USERID для извлечения идентификатора пользователя, состояния истечения срока действия сеанса и любых других дополнительных сведений и сведений о авторизации, если это применимо.
  • Теперь приложение доверяет user_id и выполняет аутентификацию