通过Spring Security的授权使用OAuth2数据创建自定义用户

时间:2018-10-18 17:35:43

标签: spring-boot spring-security spring-security-oauth2

我正在尝试在我的应用程序中支持表单登录和Facebook身份验证,目的都是创建一个User对象。借助formLogin,我可以创建一个注册控制器并保留我的User实体,但是如何从Facebook截获OAuth2身份验证以创建(或登录(如果已有的话)一个)User实体?

到目前为止,这是我的安全配置:

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
            .authorizeRequests()
            .antMatchers("/oauth2/**", "/webjars/**", "/users/signup", "/users/recover", "/users/reset/**", "/img/**", "/css/**", "/js/**").permitAll()
            .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/users/login")
                .successHandler(loginSuccessHandler())
                .permitAll()
                .and()
            .logout()
                .logoutUrl("/users/logout")
                .logoutSuccessUrl("/users/login?logout")
                .permitAll()
                .and()
            .oauth2Login()
                .defaultSuccessUrl("users/facebook");
    }

是否可以通过创建successHandler或类似的方法来实现此目的?

1 个答案:

答案 0 :(得分:0)

最后找到了解决方案,如here所述,您应该使用spring-security-oauth2-autoconfigure批注通过@ EnableOAuth2Sso软件包配置OAuth2授权,然后创建一个PrincipalExtractor来构建用户实体基于OAuth2提供程序发送的数据。

这样,在以后的调用中,您可以通过getPrincipal()访问自己的模型对象。