将 Facebook 身份验证添加到我的 Spring MVC 应用程序

Posted

技术标签:

【中文标题】将 Facebook 身份验证添加到我的 Spring MVC 应用程序【英文标题】:Adding Facebook authentication to my Spring MVC application 【发布时间】:2017-02-26 10:35:59 【问题描述】:

我正在尝试将 OAuth2 身份验证配置到当前配置为使用简单 FORM 身份验证的现有 Spring MVC 应用程序中。我想使用 Facebook 作为身份验证提供程序,但我还需要维护表单身份验证并在应用程序数据库中注册用户数据,这两种身份验证方法的方式相同(显然对于社交身份验证,某些字段将不存在,例如 @987654323 @)。

我正在使用带有这些附加依赖项的 Spring Boot 1.4.1:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
</dependency>

但我找不到解释如何解决我的案例的教程或一些清晰的文档(FORM + OAuth2)。

我尝试关注this tutorial,但它基于 Spring Boot + AngularJS,而我使用的是纯 html + Thymeleaf。

这是我当前的 Spring Security 配置:

http.authorizeRequests() //
     .antMatchers("/css/**").permitAll() // static resources
     .antMatchers("/webjars/**").permitAll() // static resources
     .antMatchers("/images/**").permitAll() // static resources
     .antMatchers("/login").permitAll().anyRequest().authenticated();
http.formLogin()
     .failureUrl("/login?error").defaultSuccessUrl("/").loginPage("/login").permitAll()//
     .and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
     .logoutSuccessUrl("/login?logout").permitAll();

我应该添加什么来配置 OAuth2 并在通过身份验证后获取用户信息?


更新经过一番谷歌搜索后,我发现可以使用这个依赖项:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-social-facebook</artifactId>
</dependency>

代替普通的spring-security-oauth2,但我仍然找不到简单的方法来实现我想要的。

我找到的最好的教程是this,但是有点过时并且不是基于 Spring Boot,所以我不明白是否存在一些实用程序和自动配置。

【问题讨论】:

您找到解决方案了吗?我目前处于同样的困境中。 【参考方案1】:

我尝试将本教程用于其他社交网络,但我知道您的应用程序作为客户端必须在 application.yml 中提供下一个配置:

facebook:
  client:
    clientId: 233668646673605
    clientSecret: 33b17e044ee6a4fa383f46ec6e28ea1d
    accessTokenUri: https://graph.facebook.com/oauth/access_token
    userAuthorizationUri: https://www.facebook.com/dialog/oauth
    tokenName: oauth_token
    authenticationScheme: query
    clientAuthenticationScheme: form
  resource:
    userInfoUri: https://graph.facebook.com/me

此信息将在 outh2 过程中用于获取授权令牌

我通过我的授权服务器使用 Spring 解决了我的配置简单 OAuth2 的问题,如果您还没有找到如何操作,可以在此处查看我的 answer

【讨论】:

@davioooh 你找到解决方法了吗?如果没有希望我的回答可以帮助你

以上是关于将 Facebook 身份验证添加到我的 Spring MVC 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

我需要将基本身份验证添加到我的 sanctum api

通过 Facebook 令牌从 Android 应用程序对 WebAPI 的身份验证访问

将 Flutter app facebook 身份验证与 Keycloak 服务集成

使用 Facebook 令牌的 Firebase Unity SDK 身份验证

将Flutter应用程序的Facebook身份验证与Keycloak服务集成在一起

Ionic Facebook 身份验证重定向问题