我一直关注@Dave Syers'关于Spring boot and oAuth2
的优秀教程我已经能够创建一个登录功能,因此受保护的资源需要登录才能访问它们。
但是现在我正在努力创建一个"注册"页。例如,在stackoverflow上,有一个注册Facebook的选项,因此您的详细信息将从Facebook发送到Stackoverflow.com。如何使用oAuth2执行此操作?我能够用spring-social做到这一点,但是我不能用直接的oauth2方法来解决这个问题。
请帮帮忙?
答案 0 :(得分:4)
答案比我想象的要简单。我需要做的就是将我的自定义AuthenticationSuccessHandler添加到过滤器:
我所要做的就是在返回Filter ssoFilter()的方法中添加一个AuthenticationSuccessHandler句柄
@Autowired
private CustomAuthenticationSuccessHandler customAuthenticationSuccessHandler;
private Filter ssoFilter() {
OAuth2ClientAuthenticationProcessingFilter facebookFilter = new OAuth2ClientAuthenticationProcessingFilter("/login/facebook");
OAuth2RestTemplate facebookTemplate = new OAuth2RestTemplate(facebook(), oauth2ClientContext);
facebookFilter.setRestTemplate(facebookTemplate);
facebookFilter.setTokenServices(new UserInfoTokenServices(facebookResource().getUserInfoUri(), facebook().getClientId()));
facebookFilter.setAuthenticationSuccessHandler(customAuthenticationSuccessHandler);
return facebookFilter;
}
我的CustomAuthenticationSuccessHandler只是一个扩展AuthenticationSuccessHandler的组件
@Component
public class CustomAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
@Override
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response,
Authentication authentication) throws IOException, ServletException {
//implementation
}
}
所以在我的注册页面中,我可以简单地使用相同的登录操作,但在成功处理程序中我创建了用户并将她存储在数据库中
答案 1 :(得分:2)
进行集成的jwt-oauth2-signup-login很难。有一些简单的方法: 1,使用卫星 - 弹簧 - 开机或卫星。 2,使用春天社交。 3,将jwt添加到spring oauth2作为单独的提供者:
这是如何处理3: 我还没有使用注册+ oauth2(因为我喜欢spring social,它可以做同样的功能),但理论上它可以很容易地完成,可以按照以下方式完成:
首先,当用户登录(在Facebook上注册也将导致登录页面)表格Facebook时,只需导入用户的信息并将信息写入用户模型。它可以通过控制器和视图来完成。
在首页上,很容易让用户选择登录或注册一个新帐户:由于Spring启动支持多个过滤器和多个AuthenticationProvider,这意味着你可以使用两个过滤器,一个用于oauth2,另一个用于jad local(jwt local)服务器)过滤本地服务器寄存器。
1,下载一个标准的spring boot jwtFilter.java文件并将其放在你的config目录中。
2,制作一个注册新用户的控制器。 3,创建/ login以返回jwt令牌。
3,制作两个过滤器,一个用于oauth2,一个用于本地jwt。
4,进行/注册注册链接。和登录标签链接到/ login。
ps:你可以从标准的spring boot jwt项目中复制所有行,这里有一行:https://github.com/mrmodise/senepe