首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 5 API密钥对设计模式

Rails 5 API密钥对设计模式
EN

Stack Overflow用户
提问于 2017-01-10 17:27:59
回答 1查看 866关注 0票数 0

如何使我的Rails 5API只使用密钥对模式?我不能考虑JWT,因为这些需求

我想:

  • 使用API跟踪应用程序
  • 安全地验证没有用户名/密码的资源所有权。

我可以想到这个过程:

  • 用户在我们的webapp中创建新的应用程序。
  • 该系统生成一个安全的公钥(应用标识符)和一个私钥。
  • 只要用户能够提交HTTP请求,用户就可以使用不同的语言使用密钥对将API与他们的应用程序集成。
  • 服务器将验证它们的密钥对并作出相应的响应。

我的问题:

  • 有什么创业板可以处理密钥对生成吗?(仅供参考)
  • 我宁愿自己生成密钥对,而不是使用宝石。哪种算法最适合我的要求?
  • 这对钥匙该过期了吗?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-10 19:00:47

  • 有什么创业板可以处理密钥对生成吗?(仅供参考) 您可以创建一个表来自己进行映射。对它们的组合创建唯一的约束
  • 我宁愿自己生成密钥对,而不是使用宝石。哪种算法最适合我的要求? 不推荐使用。即使你能做的比一个经过验证的宝石更好(不太可能),它也不值得花时间,除非你有一个非常好的理由,或者所有的宝石都有根本的缺陷,它们会在你的用例中引起问题。但是,如果您愿意,您可以使用快速散列算法,如MD5默默哈希,并在此基础上进行构建。 您可以简单地使用SecureRandom,它已经随ruby一起提供了。示例用例: SecureRandom.uuid #=>“2d931510-d99f-494 a-8c67-87feb05e1594”
  • 这对钥匙该过期了吗? 这取决于您的密钥对的使用方式。如果用户依赖于键对应用程序进行api调用,则很可能不会。想象一下,您的应用程序依赖于Google的API,有一天,Google突然过期了您的密钥,您所有的API调用都返回403。哇哦..。但是,您可能希望给用户一个撤销和重新生成用户的选项。 很好的例子是Facebook,Google,甚至支付服务,比如Stripe,Braintree,除非你撤销它,否则不会过期你的密钥对。 或者,如果确实要执行过期操作,则应提供刷新机制。你可以看看Uber的oauth API
  • 我是否需要安全地生成应用程序id (我称之为公钥)?会不会是随机的? 因此,我假设您所指的公钥和私钥对不是。如果不是,您首先需要知道要公开哪个端点。 如果用户只从服务器端访问API端点,那么您只需要一个秘密密钥。然后,您可以简单地通过秘密密钥查找用户,然后确认身份。在大多数情况下,这就是你所需要的。 如果您的用户还需要从前端发出请求(例如google的地址验证API、stripe的信用卡验证API等),那么您将需要一个可发布的密钥(因为它将位于前端代码库中)。有了这个,您将需要更加小心您返回的东西。经验法则是,如果信息是敏感的(如条带),则需要返回特定于客户端的信息。例如,验证信用卡并返回卡片令牌。令牌应该是特定客户端的唯一标记。见下文。您返回一个不同的令牌,即使它们是相同的信用卡。当客户端实际请求为信用卡充电时,您可以使用密匙查找客户端,然后匹配信用卡令牌。 publishable_keys credit_card_tokenscard_token credit_card_id x1*
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41574759

复制
相关文章

相似问题

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