Как проверить заголовок SM_USER в предварительной аутентификации Spring Security для siteminder - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь создать безопасный API Spring Spring, используя предварительную аутентификацию для siteminder.

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

Если вы не укажете заголовок, я получаю сообщение об ошибке org.springframework.security.web.authentication.preauth.PreAuthenticatedCredentialsNotFoundException: заголовок SM_USER не найден в запросе, который действителен.

Нокак я могу быть уверен, что это безопасно?если кто-то знает URL моего отдыха, API может вызвать это без проблем.Стоит ли проверять что-нибудь еще весной или только siteminder предлагает аутентификацию пользователя?

1 Ответ

0 голосов
/ 20 января 2019

Интерфейсный веб-агент 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).

НТН!

-Ричард

...