我正在创建一个移动应用程序,我想向用户提供使用电子邮件或Facebook帐户注册/登录的选项。
过去两天我读了很多东西,但我仍然不明白该怎么做。
我已经看到了以下链接的示例,但它对我来说有点混乱,我想使用Spring(引导)堆栈,使用Java Annotation Configuration。 http://porterhead.blogspot.com.br/2013/01/writing-rest-services-in-java-part-4.html
我发现用于其他身份验证的最佳示例是http://www.codesandnotes.be/2014/10/31/restful-authentication-using-spring-security-on-spring-boot-and-jquery-as-a-web-client/,但它是基于表单的,不适用于移动应用程序。
我头脑中的应用程序流程是:
之后的步骤对我来说有点模糊。在这些检查之后,我应该将什么返回给客户?如何针对以下请求验证其令牌?
我已经阅读了很多,但仍然无法连接点。任何帮助都将非常感激。
提前致谢!
答案 0 :(得分:2)
首先,当您将facebook-auth令牌发送到后端时,它将由facebook库检查,如spring-social,而不是spring security。所以,我只是给你一个春天社交的例子。
Facebook facebook = new FacebookTemplate(fbtoken, yourappname);
org.springframework.social.facebook.api.User facebookUser = facebook.userOperations().getUserProfile(); // throw exception if token is not authenticated
if(facebookUser.getId() != null){
return true;
}else{
throw new AuthenticationException(configProp.getProperty("invalid token"), HttpStatus.FORBIDDEN, HttpStatus.FORBIDDEN.value());
}
在验证facebook身份验证令牌后,您必须为您的应用创建一个唯一令牌,您可以通过
创建它String token = UUID.randomUUID().toString()
然后这个令牌将保存在数据库中并返回到客户端。来自客户端的进一步请求,您已从客户端发送此令牌,现在此令牌将由spring security进行检查。
if(tokenValid){
//access your app
}else{
return "unauthorized user"
}
注销时,您将从数据库和客户端
删除它