#authentication #grails #authorization #cas
#аутентификация #grails #авторизация #cas
Вопрос:
Коллеги-разработчики grails, помогите мне найти самый простой способ выполнить следующее. Итак, у меня есть Tomcat с включенными CAS, который используется всеми размещенными веб-приложениями. Одним из таких веб-приложений является приложение grails.
Что касается файлов в папке веб-приложения этого приложения grails, они просто могут видеть request.getRemoteUser(), как и ожидалось.
Что касается grails-app (например, для получения имени пользователя в контроллерах), насколько я понимаю, я должен предпринять некоторые дополнительные шаги.
Мой вопрос — какой самый простой способ добиться этого? С моей точки зрения, просто пытаясь решить эту проблему любыми способами, я могу пересылать запросы на контроллеры из части веб-приложения, но это извращает. Или я могу установить плагин grails CAS, но это означает, что я просто удваиваю конфигурации, поскольку я уже настраиваю web.xml .
Или я могу (могу ли я?) Как-то использовать для этих целей springSecurityService?
Но какой самый элегантный способ получить имя пользователя в приложении grails, когда, как и для веб-приложений, уже есть работающие CAS?
Ответ №1:
Есть несколько разных способов справиться с этим:
- Используйте spring-security-core с spring-security-cas; но, как вы говорите, это добавляет второй уровень CAS
- Доступ к информации о пользователе через request.remoteUser, как и в любом другом веб-приложении
- настройте PreAuthenticatedAuthenticationProvider и RequestHeaderAuthenticationFilter, чтобы заставить spring-security доверять заголовкам запросов, настроенным на tomcat; есть некоторая информация о настройке этого на http://dickersonshypotheticalblog.blogspot.com/2011/05/grails-spring-security-using.html
Комментарии:
1. ну, дело в том, что я вообще не вижу request.remoteUser в контроллерах grails, вот почему я задал этот вопрос.