Spring Oauth2 和 Rest 后端

Posted

技术标签:

【中文标题】Spring Oauth2 和 Rest 后端【英文标题】:Spring Oauth2 and Rest Backend 【发布时间】:2018-03-24 15:12:14 【问题描述】:

我已成功完成本教程。 https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_authserver

但是,我似乎无法将其用作休息后端服务。我总是从授权服务器获取登录页面。

我怎样才能让它工作?

我在帖子中使用以下标题。

Authorization: Bearer <my access token from facebook>
Content-type: application/x-www-form-urlencoded

客户端/资源服务器如下所示:

@EnableAutoConfiguration
@Configuration
@EnableOAuth2Sso
@RestController
public class ClientApplication extends WebSecurityConfigurerAdapter 

    @RequestMapping("/")
    public String home(Principal user) 
        return "Hello " + user.getName();
    

    public static void main(String[] args) 
        new SpringApplicationBuilder(ClientApplication.class)
            .properties("spring.config.name=client").run(args);
    

    @Override
    public void configure(HttpSecurity http) throws Exception 
        http.antMatcher("/**").authorizeRequests().anyRequest().authenticated().and().exceptionHandling().and().csrf().disable();
    

【问题讨论】:

【参考方案1】:

在访问资源服务器之前首先访问授权服务器,这就是为什么您总是从授权服务器看到页面的原因。我建议您对 OAuth2 概念有很好的理解。我遵循了本教程,它非常有帮助。 [http://websystique.com/spring-security/secure-spring-rest-api-using-oauth2/][1]

【讨论】:

所以基本上我需要禁用授权服务器上的登录表单并让资源服务器使用rest来授权发布的访问令牌,对吗?编辑:我想使用 Facebook 作为授权服务器,我不想自己创建自定义用户/用户详细信息。 在这里,我相信您尝试使用 facebook oauth2 作为授权服务器,对吗?如果是这种情况,那么您需要按照您所说的从授权服务器中删除登录表单。

以上是关于Spring Oauth2 和 Rest 后端的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Oauth2.0 合并到现有的 Java Spring Web MVC 和 REST 项目中?

Spring Boot(OAuth2 和 REST):BeanCreationError

让 oauth2 与 spring-boot 和 rest 一起工作

如何将 spring security 与 rest oauth2 服务和 spring social 集成?

将 OAuth2 或 JWT 用于带有 Wordpress 后端(REST API)的移动应用程序

带有 spring-security 的 OAuth2 - 通过 HTTP 方法限制 REST 访问