将 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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
通过 Facebook 令牌从 Android 应用程序对 WebAPI 的身份验证访问
将 Flutter app facebook 身份验证与 Keycloak 服务集成
使用 Facebook 令牌的 Firebase Unity SDK 身份验证