Как обогатить аутентификацию Oauth2 данными из базы данных? - PullRequest
0 голосов
/ 03 июня 2019

Я использую spring-boot-starter-oauth2-client с webflux (весенняя загрузка 2.2.0.M3).

Мне бы хотелось, чтобы методы моего контроллера получили данные о пользователе с помощью userId из базы данных.

Я понял, что мне нужно реализовать ReactiveUserDetailsService, ReactiveUserDetailsPasswordService для аутентификации пользователя с помощью логина и пароля.

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

Какие интерфейсы я должен реализовать для обеспечения полной аутентификации для того же пользователя по электронной почте / паролю, Facebook, учетным записям Google?

По умолчанию в моих методах контроллера у меня есть разные основные объекты для аутентификации Oauth2 и UserDetails

1 Ответ

2 голосов
/ 18 июня 2019

Этот ответ основан на предположении, что одновременно будет использоваться только один механизм поставщика аутентификации, а не все вместе.
Для достижения этой цели вам необходимо использовать диспетчер аутентификации Autowire в конфигурации сервера авторизации. Этот компонент диспетчера аутентификации будет условным. Во внешнем файле application.properties вы можете указать, какой механизм аутентификации должен использоваться. Затем предположим, что вы хотите, чтобы Facebook в качестве поставщика аутентификации создал класс, код которого выглядел бы следующим образом

public class FacebookAuthenticationProvider{

@Autowired
AuthenticationManagerBuilder auth;

@Override
public void configure(){
        auth.authenticationProvider(/**add desired authentication provider here**/);
   }
}

Можно сделать то же самое для Google, LDAP и т. Д. Поэтому всякий раз, когда запускаются весенние приложения, при настройке Сервера авторизации будет использоваться поставщик поставщика аутентификации во внешнем файле свойств.

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