В Grails, как мне создать и / или обновить пользователей на основе аутентификации LDAP, а затем войти в систему? - PullRequest
1 голос
/ 18 января 2012

Я новичок в Grails и перешел на версию 2. Я занимаюсь разработкой проекта, который использует Spring Security 3 - и он работает нормально - но я хочу использовать сервер своей организации LDAP (если / когда он естьдоступны), чтобы сделать следующее:

  • аутентифицировать пользователей
  • обновить данные локального пользователя с подробностями из LDAP
  • создать пользователя, если они не существуют
  • обновить пароль локального пользователя (в случае, если сервер LDAP недоступен)
  • зарегистрировать этого пользователя в

Возможно, я пропустил много фундаментальных вещей на моемспособ заставить это работать, как на самом деле, как работает Grails - и я изо всех сил пытаюсь понять, как на самом деле прервать процесс аутентификации Spring Security с помощью поиска LDAP, а затем как вернуть эти детали таким образом, чтобы я мог использовать их дляобновить существующего пользователя или создать нового ...

Я нашел здесь базовое руководство: http://jamesjefferies.com/2011/01/06/grails-spring-security-ldap/, что означает, что я могу аутентифицировать себя как пользователя с сервера LDAP- хотя Spring Security по-прежнему показывает меня как вышедшего из системы, но не позволяет мне войти в систему, пока я не выйду вручную ... так что это своего рода в состоянии входа в систему.

Волшебство делает мою голову в... сначала я был поражен тем, что смог создать целое веб-приложение с несколькими командами и настройкой на несколько часов - но теперь он снова укусил меня - как и отсутствие полезных примеров ... и Spring SecurityДокументация плагина LDAP в некоторой степени отсутствует (или, может быть, это моё отсутствие понимания).

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

Заранее благодарим за любую помощь

Стив

1 Ответ

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

Вот хороший пример здесь , который показывает, как реализовать пользовательский маппер пользовательских данных.Я успешно использовал этот метод в приложении Grails 2.0 для входа в LDAP.По сути, у вас есть CustomUserDetailsContextMapper, который реализует интерфейс UserDetailsContextMapper, который вы затем используете для переопределения реализации по умолчанию путем регистрации bean-компонента в conf> spring> resources.groovy.Затем внутри вашего CustomUserDetailsContextMapper вы проверяете пользователя (класс вашего домена) с соответствующим именем пользователя, и если его нет, вы создаете его, используя данные из ctx.originalAttrs, которые содержат данные из результатов запроса ldap.Затем вы должны вернуть новый org.springframework.security.core.userdetails.User.Вы можете расширить этот класс, добавив другие поля, к которым вы хотите иметь доступ напрямую из основного объекта.

...