Grails Security без реализации базы данных

Я разрабатываю веб-приложение с Grails 2.2.0, которое выполняет все действия через реализованный API, который вызывает другой внутренний сервер. Это означает, что все вещи, даже аутентификация и все, что с ней связано, выполняются через API и соответствующий внутренний сервер.

Теперь я хотел использовать плагин SpringSecurity или Apache Shiro для аутентификации, управления ролями и т. д., но все, с чем я столкнулся, используют классы domain в связи с базой данных, что я не собираюсь делать... есть ли возможность использовать любой из этих плагинов без подключения к базе данных без необходимости их настройки в высокой степени? Или есть другой плагин, о котором я не знаю, который может обеспечить необходимую мне функциональность «без проблем»?

Я надеюсь, что сам вопрос достаточно ясен, в противном случае, пожалуйста, не стесняйтесь спрашивать меня о дальнейшем / лучшем объяснении моего вопроса :)


person herom    schedule 28.01.2013    source источник


Ответы (2)


Плагин Spring Security Core по умолчанию использует классы домена и базу данных, но легко настроить источник данных пользователя и роли с помощью пользовательской реализации UserDetailsService. Существует целая глава в документы по этому поводу.

Я также рассказал о настройке плагина и привел пример пользовательского поставщика аутентификации. Образец приложения и ссылка на видео с докладом здесь.

person Burt Beckwith    schedule 28.01.2013
comment
большое спасибо за сообщение в блоге и ссылку на ваше (очень интересное!) выступление - сейчас я прошел вышеописанное и очень хочу попробовать реализацию с помощью Spring Security Plugin;) - person herom; 28.01.2013
comment
Я прошел через вышеизложенное и очень хотел бы попробовать реализацию с помощью Spring Security Plugin;) но, как всегда, у меня есть несколько вопросов по этому g и первое, что Я хочу знать, если это необходимо, аутентификация учетных данных пользователя (имя пользователя, пароль) должна быть в моем проекте Grails? Я просто спрашиваю, потому что вся аутентификация выполняется через бэкэнд в моем проекте, и я не хочу хранить данный пароль дольше, чем необходимо... - person herom; 28.01.2013
comment
Spring Security не волнует, откуда берутся данные. Вам просто нужно создать действительный экземпляр пользователя для пользовательской службы UserDetailsService или аутентификации напрямую при создании пользовательского поставщика. - person Burt Beckwith; 28.01.2013
comment
большое спасибо - я сейчас работаю над этим - кажется многообещающим;) - person herom; 28.01.2013

Плагин Apache Shiro не заставляет вас использовать классы предметной области или базу данных. У вас может быть Shiro Realm (поместите его в grails-app/realms), который делегирует аутентификацию и авторизация на бэкенд-сервере. Это должно быть что-то вроде:

class BackendServerRealm {
   def authenticate(authToken) {
       // call backend authentication with credentials from authToken
       def user = backednService.authenticate(authToken.username, authToken.password)
       ...
       new SimpleAccount(user.username, user.password, "BackendServerRealm")
   }
}

Shiro просто предоставляет вам инфраструктуру для выполнения аутентификации и авторизации, но вы можете довольно легко подключить свою собственную реализацию.

person Dror Bereznitsky    schedule 28.01.2013
comment
спасибо за предложение Широ @drorb - но я решил работать с плагином безопасности Spring;) - person herom; 29.01.2013