Spring boot 3.0(бэкэнд) + ионный (интерфейс) Oauth2 google

Я не совсем понимаю концепцию, как именно мне нужно связать переднюю и заднюю часть в ключе oauth2. Я вижу несколько библиотек весной, таких как oauht2-client и oauth2-resource-server. В качестве клиента используется ионное приложение, которое получает токен от Google, а затем отправляет этот ** токен ** в мое серверное приложение весенней загрузки, которое использует oauth2-resource-server, и я проверяю этот токен beawer и возвращаю данные из ресурса API.

Но я хочу создать локального пользователя (пользователя регистрации), но я не совсем понимаю, где и как нужно создать этого локального пользователя.

Теперь он просто проверяет токен идентификатора от Google и возвращает информацию из ресурса API.

Как правильно использовать oauth2? Я думаю, это будет так:

  1. Пользователь одобряет Google oauth2
  2. Фронтальный запрос на отправку с идентификатором токена
  3. Бэкэнд-проверка, существует ли пользователь (если он не создан на основе информации о токене идентификатора)
  4. Бэкэнд создает токен доступа и возвращается на передний план
  5. Фронт получения информации с сервера ресурсов с токеном доступа

Можете ли вы объяснить, как я должен это сделать правильно?

Мой код при весенней загрузке

безопасность.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.

Мои уроки охватывают большинство этих тем.

Другие вопросы по тегам