我不太明白概念如何在线索 oauth2 中将前后链接起来。我在 spring witch oauht2-client 和 oauth2-resource-server 中看到很少的库。当客户端使用应用程序的 ionic 时,它从 google 获取令牌,然后将此 **id 令牌 ** 发送到我的后端 spring boot 应用程序,该应用程序使用 oauth2-resource-server,我验证此 beawer 令牌并从 api 资源返回数据。
但是我想创建一个本地用户(注册用户),但我不太明白必须在哪里以及主要如何创建这个本地用户。
现在它只是验证来自 google 的 id 令牌并从 api 资源返回信息。
哪种正确方式使用oauth2? 我想它会是这样的:
你能解释一下我必须如何正确地做到这一点吗?
我在 Spring Boot 上的代码
安全.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
构建.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'
您应该在后端配置一个 OAuth2 授权服务器(最好是一个具有社交登录功能的 OpenID 提供商,用于您的“使用 Google 登录”功能)。此 OAuth2 授权服务器将处理用户注册和身份验证(使用授权代码流程)。
有很多这样的解决方案可以在您的服务器上运行(Keycloak 是一个著名的解决方案),也可以从云中使用(Auth0 和 Amazon Cognito 只是许多产品中的示例)。您甚至可以使用 Spring 构建自己的授权服务器(有一个 spring-authorization-server 项目,但请注意,它需要更多的努力才能开始)。
关于您的离子前端,可以:
angular-auth-oidc-client
,如果使用 Angular),但这不是趋势我的教程涵盖了大部分主题。
如果我理解正确的话,您想使用 Oauth2 与 Google 来确认用户的身份并在数据库中的某个位置创建本地用户。
如果是这种情况,我认为你写的步骤是正确的。让我在这里重写它们:
你可以看看这个教程。
它展示了如何在 Spring/React 中实现这一点。我认为你可以根据你的场景和框架进行调整。如果您有任何疑问,请随时询问。