Аутентификация CAS и ограничение доступа для указанных пользователей - PullRequest
1 голос
/ 24 октября 2010

Я использую CAS (Central Authentication Service) от Jasig в ​​клиентском приложении JSF, работающем на сервере Tomcat 6.Я хотел бы ограничить доступ к приложению только для пользователей, указанных в моей базе данных, а не для всех пользователей, которые могут быть аутентифицированы с помощью этой службы CAS.Когда пользователь пытается войти в систему, мне нужно проверить, есть ли его имя пользователя в таблице пользователя моей базы данных, и если это так - разрешить доступ к приложению.В противном случае я бы хотел перенаправить пользователя на страницу «У вас нет прав доступа к этой части приложения».Так что мне нужна авторизация.Есть ли хороший способ авторизации пользователей в jsf 2.0?Заранее благодарим за любую помощь / предложения.

1 Ответ

0 голосов
/ 02 мая 2012

Похоже, вам нужно создать собственный класс обработчика аутентификации в CAS.Теоретически, ваш обработчик должен расширить это [1], выполнить все необходимые проверки и поиск в базе данных, а затем сможет вернуть сигнал, указывающий, может ли пользователь выполнить авторизацию.

Затем вы должны ссылаться на свой пользовательский обработчик в файле deploerConfigContext.xml.

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

Другой подход заключается в использовании метода isUserInRole () [2] с использованием API-интерфейса persondir.

[1] http://developer.jasig.org/projects/cas/cas-server-core/cas-server/cas-server-core/apidocs/org/jasig/cas/authentication/handler/support/AbstractUsernamePasswordAuthenticationHandler.html

[2] https://wiki.jasig.org/pages/viewpage.action?pageId=47874068

...