Интерфейсный веб-агент SiteMinder является гарантией того, что сеанс действителен - вы должны убедиться, что через конфигурацию сервера / сети невозможно напрямую получить доступ к вашему приложению без предварительной передачи через веб-агент SiteMinder.
Кроме того, SiteMinder устанавливает несколько заголовков. SM_USER
не следует использовать в одиночку, поскольку он может быть утвержден веб-агентом в некоторых случаях, когда у пользователя фактически нет действительного сеанса. Вместо этого вы должны first искать существование (непустое) SM_SERVERSESSIONID
, которое существует, только если сеанс действителен.
Наконец, я вообще стараюсь вообще избегать SM_USER
- потому что SM_USER
на самом деле вовсе не атрибут пользователя, а скорее "идентификатор входа, используемый для аутентификации". Если SiteMinder аутентифицирует пользователей с помощью федерации (например, SAML) или аутентификации x509, SM_USER
будет отличаться от того, который использовался при входе в систему. Вместо этого в SiteMinder лучше установить «универсальный идентификатор», который является атрибутом пользователя и отображается в заголовках как SM_UNIVERSALID
. Администраторы SiteMinder будут знать, как это сделать (и, возможно, уже сделали это, - посмотрите, есть ли у вас уже доступный заголовок SM_UNIVERSALID
).
Еще одно предостережение: в некоторых конфигурациях SiteMinder подчеркивание не будет в имени заголовка (использование подчеркивания называется «устаревшим» режимом заголовка в SiteMinder), поэтому вы можете захотеть сделать ваше приложение настраиваемым по отношению к имена заголовков, например SMSERVERSESSIONID
, SMUSER
, SMUNIVERSALID
и т. Д.
Если вы хотите программно повторно проверить сеанс, вы можете использовать API агента SiteMinder или API REST или посмотреть на продукт моей компании «SSO / Rest», который предоставляет полный набор унифицированных интерфейсов REST для SiteMinder, а также другие Поставщики единого входа (http://www.idfconnect.com).
НТН!
-Ричард