Spring boot 角度ts(前端)和#x2B;弹簧防尘套(后端)OAuth2流量

Spring boot 角度ts(前端)和#x2B;弹簧防尘套(后端)OAuth2流量,spring-boot,spring-security,oauth-2.0,authorization,angular6,Spring Boot,Spring Security,Oauth 2.0,Authorization,Angular6,我想在我的全栈应用程序(Angular 6用于前端,Spring boot用于后端)中通过Google和Microsoft实现授权,但我遇到了一个问题 我遵循此方案,该方案描述了如何实现流程: OAuth2授权流: 问题在于步骤4,前端应该向后端发送授权代码。我只是不知道使用哪个端点,以及如何在SpringSecurity配置中配置它 这个端点应该获得授权代码,在OAuth提供者端检查它,请求访问和刷新令牌,并记住授权用户 也许有一个应该如何做的例子?谷歌的答案似乎并不合适 我已经做了: 在安

我想在我的全栈应用程序(Angular 6用于前端,Spring boot用于后端)中通过Google和Microsoft实现授权,但我遇到了一个问题

我遵循此方案,该方案描述了如何实现流程:

OAuth2授权流:

问题在于步骤4,前端应该向后端发送授权代码。我只是不知道使用哪个端点,以及如何在SpringSecurity配置中配置它

这个端点应该获得授权代码,在OAuth提供者端检查它,请求访问和刷新令牌,并记住授权用户

也许有一个应该如何做的例子?谷歌的答案似乎并不合适

我已经做了:

  • 在安全配置中添加了@EnableOAuth2Sso注释。但这并不是我真正需要的,因为它支持后端授权。(从后端重定向到Google页面可以工作,但我需要从前端)

    @使能OAuth2SO 公共类安全配置扩展了WebSecurity配置适配器{ ... }
  • 尝试自己配置Oauth2Login

    @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests().anyRequest().authenticated() .and() .oauth2Login() .clientRegistrationRepository(clientRegistrationRepository) .authorizedClientService(new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepository)); } @凌驾 受保护的无效配置(HttpSecurity http)引发异常{ http .authorizeRequests().anyRequest().authorized() .及() .oauth2Login() .clientRegistrationRepository(clientRegistrationRepository) .AuthorizedClient服务(新的InMemoryAuth2AuthorizedClient服务(clientRegistrationRepository)); }
  • 渐变依赖项:

    <pre>
        compile 'org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.0.0.RELEASE'
        compile 'org.springframework.security:spring-security-oauth2-jose'
        compile 'org.springframework.security:spring-security-oauth2-client'
    </pre>
    
    <pre>
    {
        "access_token": "...",
        "expires": "..."
    }
    </pre>
    
    
    编译“org.springframework.security.oauth.boot:spring-security-oauth2-autoconfigure:2.0.0.RELEASE”
    编译“org.springframework.security:spring-security-oauth2-jose”
    编译“org.springframework.security:spring-security-oauth2-client”
    
    我所期望的是:

    后端的某个端点,它接受授权代码。例如:

    URL:localhost:8080/oauth2/authcode/google

    
    {
    “授权代码”:“…”
    }
    
    并返回访问令牌:

    
    {
    “访问令牌”:“…”,
    “过期”:“…”
    }
    
    中间发生了什么:后端交换授权代码以访问令牌和刷新令牌,并将其保存到自己的数据库中


    谢谢大家!

    到目前为止你尝试了什么?请回答您的问题,并将您的代码发布为!你运行它时发生了什么?你以为会发生什么?您具体遇到了什么问题?对资源服务器的任何请求都应该有效。没有要调用的特定端点。对资源服务器的第一个调用是检查授权代码。您是否找到此问题的解决方案?我已经寻找了一段时间,我发现的是服务器+客户端(合并)或服务器+客户端+密钥斗篷。当然,我们可以创建您在后端提到的端点(以避免在客户机上泄露秘密),但我仍在寻找是否已经实现了某些功能。 localhost:8080/oauth2/authcode/google
    <pre>
    {
        "authorization_code": "...."
    }
    </pre>
    
    <pre>
    {
        "access_token": "...",
        "expires": "..."
    }
    </pre>