Spring Boot Sping Boot 3.0(backend)+ ionic(frontend)Oauth2 google

kmynzznz  于 2023-04-11  发布在  Spring
关注(0)|答案(1)|浏览(159)

我真的不明白的概念,我如何确切地链接前面与后面的线索oauth2.我看到几个库在Spring女巫oauht 2-client和oauth2-resource-server.作为客户端使用 Ionic 应用程序,从谷歌获得令牌,然后发送这个id令牌到我的后端Sping Boot 应用程序,使用oauth2-resource-server,我验证这个beawer令牌,并从API资源返回数据.
但我想创建一个本地用户(注册用户),但我真的不明白在哪里和主要如何必须创建这个本地用户。
现在它只是验证来自google的id token,并从API资源返回信息。
使用oauth2的正确方法是什么?我想应该是:
1.用户批准google oauth2
1.带id令牌的前端发送请求
1.后端检查用户是否已经存在(如果不是从ID令牌信息创建)
1.后端创建访问令牌并返回前端
1.使用访问令牌从资源服务器前端获取信息
你能解释一下我该怎么做吗?
我在 Spring Boot 上的代码
security.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(); }应用程序.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'

8i9zcol2

8i9zcol21#

您应该在后端配置一个OAuth2授权服务器(理想情况下是一个具有社交登录功能的OpenID Provider,用于“使用Google登录”功能)。该OAuth2授权服务器将处理用户注册和身份验证(使用授权代码流)。
有很多这样的解决方案可以在服务器上运行(Keycloak是一个著名的解决方案),也可以从云端使用(Auth 0和Amazon Cognito只是许多产品中的示例)。您甚至可以使用Spring构建自己的授权服务器(有一个spring-authorization-server项目,但要注意,它需要更多的努力才能开始)。
关于你的离子前端,或者:

  • 让它成为一个公共的OAuth2客户端,为你的框架提供一个库(例如,如果使用Angular,则为angular-auth-oidc-client),但这不是趋势
  • 在前端和REST API之间插入一个中间OAuth2客户端。这是callBackendFFrontend模式,目的是对浏览器或移动的应用隐藏OAuth2令牌。Spring Cloud Gateway可以配置为BFF。

My tutorials涵盖了这些主题的大部分。

相关问题