生成 API 密钥的最佳方法?
Posted
技术标签:
【中文标题】生成 API 密钥的最佳方法?【英文标题】:Best way to generate API Key? 【发布时间】:2013-09-26 02:19:42 【问题描述】:用例
我正在通过简单的注册和登录构建一个 iPhone 应用程序。
当用户注册/登录时,我希望 Ruby (Sinatra) 服务器为该用户生成/获取并返回访问令牌,然后 iPhone 客户端可以使用基于 HTTPS 的基本身份验证随每个后续请求一起发送该访问令牌。
我尚未实施 OAuth 2.0,以便第三方应用可以访问服务器。现在,我只是在构建一个简单的内部 API(用于我自己的第一方 iPhone 应用)。
示例
基本上,我想生成一个类似于 Stripe 的 API 密钥:https://manage.stripe.com/account/apikeys
例如:sk_test_NMss5Xyp42TnLD9tW9vANWMr
用 Ruby 来说,最好的方法是什么?
【问题讨论】:
【参考方案1】:Ruby 标准库提供了一整类称为SecureRandom
的安全随机数据生成器。无论你想要什么,你都可以在那里找到。
Stripe 的键本质上是 URL 安全的 Base64。你可以得到非常相似的东西:
require 'securerandom'
p "sk_test_" + SecureRandom.urlsafe_base64
(Stripe 确实会去除非字母数字字符,但如果您不想在键中使用连字符,这对 gsub 来说是微不足道的。)
【讨论】:
以上是关于生成 API 密钥的最佳方法?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Keycloak 时模拟“生成 API 令牌”的最佳实践
对于使用 Facebook iOS SDK 的混合 SSO 场景,为我们自己的自定义用户记录生成密码/密钥的最佳方式是啥?