首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API认证与OAuth2的使用

API认证与OAuth2的使用
EN

Stack Overflow用户
提问于 2014-10-22 10:25:03
回答 1查看 501关注 0票数 2

我想弄清楚我将如何引入基于令牌的(基于密钥的?)用于移动客户端的web (目前正在查看Sinatra,但也可能是Rails )的身份验证以及OAuth将如何融入图片。

因此,假设我想创建一个使用Facebook进行身份验证和获取基本用户数据的web服务。在这里,我的API将是Facebook的OAuth服务器的客户端,在用户成功登录Facebook时请求一个访问令牌。然后,这将允许我访问用户的数据,我将使用这些数据在我的数据库中创建一个条目,将这个特定于用户的令牌与我希望链接到它们的任何其他应用程序信息一起存储。

我想到目前为止我已经把这部分做好了,但我有点困惑。

我认为我的API还需要某种形式的API密钥来授予移动用户访问权限,因为我不想在他们的设备上传输和存储Facebook密钥。为了获得我的服务,我是否需要有一个单独的密钥存储库,并提供给客户?有什么“最佳做法”来做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-22 12:32:56

为了获得我的服务,我是否需要有一个单独的密钥存储库,并提供给客户?

是。

有什么“最佳做法”来做到这一点吗?

最简单的方法是在每个用户创建时生成一个单独的身份验证令牌,并将其公开给移动客户端。然后将其与随后的每个请求头一起发送。

Devise提供了如何实现这一目标的简单例子。您不需要为此设计,只需提供一些令牌生成机制。

代码语言:javascript
复制
#Devise.friendly_token
def self.friendly_token
  SecureRandom.urlsafe_base64(15).tr('lIO0', 'sxyz')
end

此机制可以通过以下方式进行扩展以提供更多的安全性

  1. 作为一个oauth2提供者本身。在使用facebook成功登录时,您将生成一个:authorization_code,客户端可以在下一步内交换自己的Oauth2标记。然后,您可以通过每个用户身份验证请求发送自己的Oauth2令牌。请参阅机架-OAuth2
  2. 实现HMAC令牌加密。在登录后生成并向每个客户端公开一个secret_key。使用此秘密将消息与唯一的客户端id一起签名。然后,服务器可以查找特定的secret_key并验证消息。 请参阅api-auth
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26505356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档