Аутентифицировать пользователя, используя внешний веб-сервис в Grails - PullRequest
0 голосов
/ 11 марта 2011

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

Теперь мне нужно интегрировать свое приложение с внешней системой, которая работает с номером участника и паролем.

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

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

Любое предложение, как мне этого добиться ... заранее спасибо: -)

Ответы [ 2 ]

1 голос
/ 12 марта 2011

Никогда не делал этого, но я думаю, что Вы должны изучить AuthenticationProvider интерфейс ( ссылка ) и создать свою собственную реализацию, которая могла бы аутентифицировать пользователя стандартным способом или с некоторой информацией обратного вызова, которая возвращается из внешнегоприложение. Здесь - некоторая информация о том, как интегрировать пользовательский поставщик в приложение.

1 голос
/ 12 марта 2011

Ознакомьтесь с моими ответами на Spring Security и внешнее приложение для аутентификации (единый вход) и Настройка Spring Security 3.x для нескольких точек входа .Вам необходимо создать два токена (один может быть по умолчанию UsernamePasswordAuthenticationToken, а второй может быть вашим пользовательским MembershipPasswordAuthenticationToken (в основном дубликат UsernamePasswordAuthenticationToken, расширяющий AbstractAuthenticationToken). Поскольку один поставщик аутентификации может поддерживать более одного токена, выможет написать логику в вашем провайдере, чтобы проверить класс токена и выполнить соответствующую аутентификацию. Например, если входящий токен имеет класс MembershipPasswordAuthenticationToken, тогда вызовите webservice для получения электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...