【问题标题】:Recommendation stack for Restful + Spring Security + Mobile AppRestful + Spring Security + Mobile App 的推荐栈
【发布时间】:2015-12-03 06:03:36
【问题描述】:

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

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

我已经看到了以下链接的示例,但这对我来说有点混乱,我想使用带有 Java 注释配置的 Spring(引导)堆栈。 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 返回一个令牌,发送到我的后端服务器;
  3. Spring 安全检查令牌是否有效。如果有效,则获取用户的详细信息(例如电子邮件)。 3.1。如果该电子邮件存在于我的数据库中,请将该用户登录。否则,创建一个新用户。

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

我已经阅读了很多,但仍然无法连接点。任何帮助将不胜感激。

提前致谢!

【问题讨论】:

    标签: spring-security spring-boot restful-authentication facebook-access-token


    【解决方案1】:

    首先,当您将 facebook-auth 令牌发送到后端时,它将由 facebook 库(如 spring-social)而不是 spring security 进行检查。所以我只是给你一个 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身份验证令牌后,您必须为您的应用创建一个唯一令牌,您可以通过以下方式创建它

    String token = UUID.randomUUID().toString()
    

    然后你将把这个令牌保存在数据库中并返回到客户端。来自客户端的进一步请求,您已从客户端发送此令牌,现在此令牌将由 Spring Security 检查。

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

    注销时,您将从数据库以及客户端删除它

    【讨论】:

    • 好的。我明白你说的。我在这里尝试一下,稍后我将向您展示我的结果!感谢您的关注!
    猜你喜欢
    • 2015-07-04
    • 2011-04-01
    • 2014-04-06
    • 2015-05-04
    • 2023-03-28
    • 2013-09-05
    • 2010-10-16
    • 2016-10-01
    • 1970-01-01
    相关资源
    最近更新 更多