Restful + Spring 安全 + 移动应用程序的推荐堆栈

Recommendation stack for Restful + Spring Security + Mobile App

我正在创建一个移动应用程序,我想为用户提供使用电子邮件或通过他们的 Facebook 帐户签名的选项up/in。

这两天看了那么多东西,还是不懂怎么做。

我看过下面的例子link,但对我来说有点混乱,我想使用Spring(引导)堆栈,用Java注释配置。 http://porterhead.blogspot.com.br/2013/01/writing-rest-services-in-java-part-4.html

我找到的最好的 rest 身份验证示例是 http://www.codesandnotes.be/2014/10/31/restful-authentication-using-spring-security-on-spring-boot-and-jquery-as-a-web-client/,但它是基于表单的,不适用于移动应用程序。

我脑海中的应用程序流程是:

  1. 用户尝试通过 Facebook 访问该应用程序(使用移动 SDK);
  2. Facebook return一个令牌,发送到我的后端服务器;
  3. Spring 安全检查令牌是否有效。如果有效,则获取用户的详细信息(例如电子邮件)。 3.1.如果该电子邮件存在于我的数据库中,则让用户登录。否则,创建一个新用户。

之后的步骤对我来说也有点晦涩难懂。经过这些检查,我应该 return 给客户什么?我如何为以下请求验证其令牌?

我读了很多书,但仍然无法将这些点点滴滴联系起来。非常感谢任何帮助。

提前致谢!

首先,当您将 facebook-auth 令牌发送到后端时,它会被 facebook 库(如 spring-social)检查,而不是 spring 安全。所以我只是给你举一个 spring-social.

的例子
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 auth token后,您必须为您的应用创建一个唯一的token,您可以通过

创建它
String token = UUID.randomUUID().toString()

然后这个令牌你将保存在数据库中并return到客户端。来自客户端的进一步请求,你已经从客户端发送了这个令牌,现在这个令牌将被 spring 安全检查。

if(tokenValid){
   //access your app
}else{
    return "unauthorized user" 
}

注销后,您将从数据库和客户端中删除它