角度ts(前端)+ spring boot(后端)OAuth2流

时间:2018-08-16 18:54:00

标签: spring-boot spring-security oauth-2.0 authorization angular6

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

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

OAuth2授权流程:

OAuth2 Authorization Flow

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

此端点应获取授权代码,在OAuth提供者一侧进行检查,请求访问并刷新令牌并记住授权用户。

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

我已经做了:

  1. 在安全配置中添加了@ EnableOAuth2Sso批注。但这不是我真正需要的,因为它可以在后端进行授权。 (从后端重定向到Google页面有效,但我需要从前端访问)

    @EnableOAuth2Sso
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
       ...
    }
    
  2. 尝试由我自己配置​​Oauth2Login。

    @Override
    protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests().anyRequest().authenticated()
                    .and()
                    .oauth2Login()
                        .clientRegistrationRepository(clientRegistrationRepository)
                        .authorizedClientService(new InMemoryOAuth2AuthorizedClientService(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>

我期望的是

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

URL:

localhost:8080/oauth2/authcode/google

<pre>
{
    "authorization_code": "...."
}
</pre>

并返回访问令牌:

<pre>
{
    "access_token": "...",
    "expires": "..."
}
</pre>

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

谢谢!

0 个答案:

没有答案