2013-09-19 3 views
0

У меня есть веб-приложение, работающее с Grails, которое смотрит за представлением и контроллером и вызывает в back-mvc backend через служебный уровень (Grails app using services from spring-mvc backend). Теперь мне нужно реализовать Spring Security (SS) для приложения.Spring Security для приложения Grails с использованием Spring MVC backend

На этом этапе я не уверен, как выйти замуж за обоих. У бэкэнда уже есть полноценная реализация весенней безопасности, но чтобы заставить приложение Grails работать, мне нужно было исключить все переходные весенние зависимости безопасности от приложения spring-mvc и пойти с чисто решением Grails (может быть, это было неправильное решение?) , Бэкэнд уже имеет объекты User и Role в комплекте с таблицей user_roles, смоделированной с помощью аннотации joinTable в домене пользователя.

Вопросы:

  1. я на правильном пути? Игнорировать все из базы Java в терминах SS-бара, используя свои объекты данных, и пойти с Grails impl с плагином SS? Я видел сообщения о том, что мне даже не нужно использовать плагин Grails, но они довольно старые, и я не уверен, как я буду комментировать мои контроллеры и службы.

  2. Если Grails - это способ, я не уверен, что мне нужно от бэкэнд и что мне нужно, чтобы переопределить/расширить в Grails. У меня есть расширенный User и UserDetailsService с SS в бэкэнд-приложении, но я не могу использовать их, поскольку я полностью исключил все банки SS, от которых они зависят, поэтому я полагаю, что мне нужно сворачивать самостоятельно?

  3. Таким образом, я реализую объект UserDetails, пользовательский UserDetailsService (должен ли он реализовать GrailsUserService?) И выставляет последний как bean-компонент, и все должно работать? Может, подумать.

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

+0

Возможно, что-то подобное поможет: http://grails.org/plugin/spring-security-cas – Gregg

+0

@Gregg Спасибо, но на данном этапе я не обязательно должен отделяться от механизма входа. Исправьте меня, если я ошибаюсь, но, похоже, излишне использовать CAS для решения этой проблемы. – dre

ответ

0

Мне удалось реализовать то, что мне нужно для этого. Я пошел с чисто подход Grails, и у меня есть моя собственная реализация userDetails, экземпляр которой возвращен моей пользовательской функцией UserDetailsService. Одна вещь, на которую нужно обратить внимание, если вы получаете доказательство работы концепции, заключается в том, чтобы убедиться, что вы читаете свой пароль в том формате, в котором вы его храните. Spring Sec будет хешировать ваш пароль для сравнения с тем, что находится в вашей базе данных и поэтому вы не сможете успешно загрузить пользователя, если вы храните свой пароль в виде обычного текста. Один из способов - использовать следующую конфигурацию в ресурсах.groovy.

passwordEncoder(PlaintextPasswordEncoder) 

Но, конечно, я бы не стал защищать это как долгосрочное решение с точки зрения безопасности.

Смежные вопросы