【问题标题】:How to authenticate REST API with Stormpath Facebook integration如何使用 Stormpath Facebook 集成验证 REST API
【发布时间】:2015-05-05 12:43:38
【问题描述】:

我正在设计一个带有Stormpath Facebook 集成的简单 REST API,并且想知道什么是用户身份验证的最佳模式。目前我没有任何用于创建用户的端点,因此对我的端点的所有请求都经过身份验证,如下所示:

  1. 根据我的应用中配置的API_ID 和API_SECRET 获取Stormpath Application 对象
  2. 根据每个请求中指定的 Facebook 令牌获取 Stormpath Account 对象
  3. 根据帐户状态验证请求或拒绝

这或多或少遵循official guide 并且工作正常,因为即使用户帐户不存在,它也会在第一次向 Stormpath 获取帐户请求时创建。它是否有意义,是否足够安全?我一直在寻找一些文档或最佳实践,但找不到任何东西。

我还需要获取/生成唯一的用户 ID,以便我可以与系统中的用户数据建立一些关系 - 所以另一个问题,这里最好的方法是什么:

  1. 生成一些唯一 ID,将其与从 Stormpath 获取的用户电子邮件相关联并保存在我的系统中 - 我认为这违反了像 Stormapth 这样封装所有用户数据的服务的一些想法
  2. 与上述相同,但将其存储在 Stormpath 帐户customData
  3. 使用Stormapth用户资源ID,可以从用户URI获取

请指教。

为了记录,我使用 Stormpath Java SDK 并将 API 设计为移动社交应用程序的后端,因此安全性对我来说非常重要。

【问题讨论】:

    标签: facebook rest authentication stormpath


    【解决方案1】:

    完全披露,我管理产品@Stormpath。我将使用您的反馈来改进文档。

    如果不了解您正在构建的 REST API,很难说它是否安全。如果您为猫图片制作了 REST API,那么与医疗/财务信息相比,我的答案会有所不同。一种看待它的方式是,Facebook 具有 Graph API (REST),它们保护需要您使用的相同访问令牌的访问。还有其他标志会让我说它不安全,比如您使用的是没有 TLS 的 HTTP。

    关于您的第二个问题,如何将 Stormpath 与您的数据联系起来。我不会说通过对您和您的应用程序有意义的应用程序建模,您会违反有关 Stormpath 的任何内容。 Stormpath 的客户将有关其用户的所有信息存储在 Stormpath 中。 Stormpath 也有客户仅将 Stormpath 用于身份验证和授权数据,并使用 customData 来绘制 Stormpath 用户帐户与其数据之间的链接。

    您存储信息的方式/位置取决于您的需求。如果您从使用 Stormpath 验证用户帐户开始,将唯一标识符/主键放在用户帐户的 customData 中是有意义的。如果您从在数据存储中查询用户数据开始并需要获取 Stormpath 用户帐户,则需要将用户帐户的 href 存储在数据存储中。

    Stormpath SDK for Java 的一个不错的功能是,当您使用 Facebook 进行身份验证时,返回的对象将显示该帐户是新创建的,还是 Stormpath 具有用于访问令牌的现有帐户:

    https://docs.stormpath.com/java/apidocs/com/stormpath/sdk/provider/ProviderAccountResult.html

    这意味着您将知道何时需要在数据存储中为帐户创建记录并使用 customData 和/或用户帐户 href 连接两者。

    【讨论】:

    • 我希望这个 API 成为移动社交应用程序的后端,因此安全性在这里很重要。我想我会坚持我目前所拥有的,但我希望在未来看到一些更新的文档,重点关注社交登录/api auth 模式/使用 Stormpath 的最佳实践。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多