gpt4 book ai didi

ruby - API认证和OAuth2的使用

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:34 25 4
gpt4 key购买 nike

我正在努力思考如何将基于 token (基于 key ?)的身份验证引入将由移动客户端使用的 Web API(目前正在研究 Sinatra,但也可能是 Rails),并且OAuth 如何融入这幅画。

那么,假设我想创建一个使用 Facebook 进行身份验证和获取基本用户数据的 Web 服务。在这里,我的 API 将是 Facebook 的 OAuth 服务器的客户端,在用户成功登录 Facebook 时请求访问 token 。这将授予我访问用户数据的权限,我将使用这些数据在我的数据库中创建一个条目,将这个用户特定的 token 与我希望链接到他们的任何其他应用程序信息一起存储。

到目前为止,我认为这部分我是对的,但这是我有点困惑的地方。

我认为我的 API 还需要某种形式的 API key 来授予移动用户访问权限,因为我不想在他们的设备上传输和存储 Facebook key 。我是否需要单独存储 key 以提供给客户以访问我的服务?是否有任何“最佳实践”方法可以做到这一点?

最佳答案

我是否必须有一个单独的 key 存储区,我向客户提供这些 key 才能访问我的服务?

是的。

是否有任何“最佳实践”方法可以做到这一点?

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

Devise 提供了一个 simple example如何做到这一点。您不需要为此设计,只需提供一些 token 生成机制即可。

#Devise.friendly_token
def self.friendly_token
SecureRandom.urlsafe_base64(15).tr('lIO0', 'sxyz')
end

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

  1. 作为 oauth2 提供者本身。使用 facebook 成功登录后,您将生成一个 :authorization_code,客户端可以在下一步中将其交换为您自己的 Oauth2 Bearer 或 MAC token 。然后,您可以在每次用户身份验证请求中发送您自己的 Oauth2 token 。参见 rack-oauth2

  2. 实现 HMAC token 加密。登录后生成一个 secret_key 并将其公开给每个客户端。使用此 key 和唯一的客户端 ID 一起签署消息。然后服务器可以查找特定 client_id 的 secret_key 并验证消息。
    参见 api-auth

关于ruby - API认证和OAuth2的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26505356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com