Spring boot 3.0(бэкэнд) + ионный (интерфейс) Oauth2 google
Я не совсем понимаю концепцию, как именно мне нужно связать переднюю и заднюю часть в ключе oauth2. Я вижу несколько библиотек весной, таких как oauht2-client и oauth2-resource-server. В качестве клиента используется ионное приложение, которое получает токен от Google, а затем отправляет этот ** токен ** в мое серверное приложение весенней загрузки, которое использует oauth2-resource-server, и я проверяю этот токен beawer и возвращаю данные из ресурса API.
Но я хочу создать локального пользователя (пользователя регистрации), но я не совсем понимаю, где и как нужно создать этого локального пользователя.
Теперь он просто проверяет токен идентификатора от Google и возвращает информацию из ресурса API.
Как правильно использовать oauth2? Я думаю, это будет так:
- Пользователь одобряет Google oauth2
- Фронтальный запрос на отправку с идентификатором токена
- Бэкэнд-проверка, существует ли пользователь (если он не создан на основе информации о токене идентификатора)
- Бэкэнд создает токен доступа и возвращается на передний план
- Фронт получения информации с сервера ресурсов с токеном доступа
Можете ли вы объяснить, как я должен это сделать правильно?
Мой код при весенней загрузке
безопасность.conf
SecurityFilterChain filterChain(HttpSecurity http) throws Exception { return http .authorizeHttpRequests() .requestMatchers("/open").permitAll() .anyRequest().authenticated() .and() .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and() .oauth2ResourceServer().jwt() .and().and() .cors().and().csrf().disable() .build(); }
application.aml
spring: security: oauth2: resourceserver: jwt: issuer-uri: accounts.google.com jwk-set-uri: https://www.googleapis.com/oauth2/v3/certs
build.gradle
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web'
1 ответ
Вам следует настроить сервер авторизации OAuth2 на своем сервере (в идеале — поставщик OpenID с функциями входа через социальные сети для функции «вход через Google»). Этот сервер авторизации OAuth2 будет обрабатывать регистрацию и аутентификацию пользователей (с потоком кода авторизации).
Существует множество таких решений, которые можно либо запускать на ваших серверах (Keycloak — известное решение), либо использовать из облака (Auth0 и Amazon Cognito — это лишь примеры во многих предложениях). Вы даже можете создать свой собственный сервер авторизации с помощью Spring (для этого существует проект Spring-authorization-server, но имейте в виду, что для начала потребуется гораздо больше усилий).
Что касается вашего ионного интерфейса, либо:
- сделайте его общедоступным клиентом OAuth2 с библиотекой для вашей платформы (например,
angular-auth-oidc-client
если использовать Angular), но это не тенденция - вставьте промежуточный клиент OAuth2 на свой сервер между вашим интерфейсом и REST API. Это шаблон вызова Backend F или Frontend , целью которого является сокрытие токена OAuth2 от браузера или мобильных приложений . Spring Cloud Gateway можно настроить как BFF.
Мои уроки охватывают большинство этих тем.