OAuth提供程序的推荐数据库结构是什么

Mey*_*sam 18 database-design oauth oauth-provider devdefined-oauth

我正在使用DevDefined库实现OAuth提供程序.我想知道是否有任何推荐的数据库结构用于在服务器端存储使用者和令牌数据.对此有任何建议将不胜感激!

Jon*_*der 26

注意:以下答案主要适用于OAuth 1.0

我对DevDefined库一无所知.但这里是我最近使用SQL数据库在最新项目中使用的数据库设计的非技术性描述.

它应该涵盖遵循基本规范所需的一切.我试图把它降到最低限度.

RequestTokens

  • 令牌(我在这里使用MD5,主键)
  • consumerKey(消费者的唯一标识符)
  • 秘密(SHA1)
  • createTime(时间戳)
  • 打回来

AccessTokens

  • 令牌(MD5,主键)
  • 秘密(SHA1)
  • consumerKey
  • userID(指资源所有者)
  • createTime

消费者(注册第三方应用程序)

  • consumerKey(MD5,主键)
  • consumerSecret(SHA1)
  • userID(指注册应用程序的开发人员,不是唯一的)
  • description(描述应用程序的文本)
  • name(应用程序的名称)
  • 打回来

UsedNonces

  • 现时
  • 时间戳

处理nonce对我来说真的是最大的设计问题.OAuth告诉您永远不要让同一个nonce再次使用相同的时间戳.但这将成为一个无限庞大的数据库.我认为大多数供应商至少会偶尔批发一次旧的nonce.

我会定期清除超过5分钟的nonce,这是基于所有时间戳超过5分钟的请求被拒绝的前提.在检查时间戳时,我有点宽容,它们需要是UTC并且不超过5分钟,并且不超过我的服务器时间超过一分钟.

  • 无法保证请求令牌或访问令牌请求通过浏览器.如果您只想支持基于浏览器的授权,那么我猜您可以跳过持久化请求令牌.OAuth规范不对客户端类型做任何假设(实际授权步骤除外,使用浏览器),但您可以自由地强制执行. (3认同)