2

我有一个 API 和一个使用 Rails 和 Devise gem 进行身份验证的 Web 应用程序。使用 Devise 和 Omniauth,我可以使用 facebook 进行注册,并通过网站使用 Facebook 登录。我的 API 使用 token_authenticable 和 TokensController 保护,所以当你想首先与我的 API 交互时,你必须将你的用户名和密码传递给 TokensController,它会给你一个有效的令牌,我的问题是当用户是用 facebook 注册,我应该将用户名和 facebook 令牌传递给 TokensController 以生成令牌吗?有一些标准的方法可以做到这一点吗?

感谢您的评论。

4

2 回答 2

1

在我看来,只要符合您的标准,您就可以选择任何您想要的:

  • 这是秘密
  • 它可以为您检索
  • 它具有最低安全性(不仅仅是“123pw”)

所以你有两个类似的选择:

  • 使用 Facebook 令牌作为“密码”
  • 使用 Devise 生成的密码

通常,您在使用 Devise 创建 Facebook 用户时会生成密码。我猜你的-call中有类似:password => Devise.friendly_token[0,20]的代码User.create

加密密码通常为 60 个字符,Facebook 令牌最多可包含255 个字符。所以我个人会选择设计生成的密码。它足够长以确保安全,并且您不依赖 API 来检索它。

于 2012-05-27T18:44:19.990 回答
1

感谢您的评论;在考虑了哪一个是最好的选择之后,这是我最终所做的:

注意:我将客户端和服务器端的代码(API)分开

客户端

  • 获取特定用户的 Facebook 令牌和 Facebook 用户 ID。
  • 使用我上面得到的参数从TokensController调用 API 方法Create方法。

服务器端

  • 我收到 Facebook 令牌和 Facebook 用户 ID。
  • 使用 Facebook 令牌,我从 API 获取 Facebook 用户 ID。
  • 我验证来自请求的接收 UID 和 Facebook UID 是否相同。
  • 如果 UID 相同,我会为我的应用程序生成一个随机令牌,并在响应中返回它。

注意:所有通信都是通过 HTTPS 完成的。

于 2012-06-04T20:36:13.763 回答