database-design - 推荐的 OAuth Provider 数据库结构

标签 database-design oauth oauth-provider devdefined-oauth

我正在使用 DevDefined 库实现 OAuth 提供程序。

我想知道是否有任何推荐的数据库结构用于在服务器端存储消费者和 token 数据。

对此的任何建议将不胜感激。

最佳答案

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

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

它应该涵盖遵循基本规范所需的一切。我试图将其降低到绝对最低限度。

请求 token

  • token (我在这里使用 MD5,主键)
  • consumerKey(消费者的唯一标识符)
  • secret (SHA1)
  • 创建时间(时间戳)
  • 回调

  • 访问 token
  • token (MD5,主键)
  • secret (SHA1)
  • 消费者 key
  • userID(指资源所有者)
  • 创建时间

  • 消费者 (注册的第三方应用程序)
  • consumerKey(MD5,主键)
  • 消费者 secret (SHA1)
  • userID(指注册应用的开发者,不唯一)
  • 描述(描述应用程序的文本)
  • name(应用程序的名称)
  • 回调

  • 已用随机数
  • 随机数
  • 时间戳

  • 对我来说,nonce 的处理确实是最大的设计问题。 OAuth 告诉您永远不要再让相同的 nonce 与相同的时间戳一起使用。但这将形成一个无限大的数据库。我认为大多数提供商至少不时地批量处理旧的随机数。

    我通常会清除超过 5 分钟的 nonce,前提是所有时间戳超过 5 分钟的请求都被拒绝。检查时间戳时我有点宽容,它们需要是 UTC 并且不超过 5 分钟,并且不超过我的服务器时间超过一分钟。

    关于database-design - 推荐的 OAuth Provider 数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4534337/

    相关文章:

    database - 设计表 : One to many and one to one at same time?

    sql - 为什么将表关系存储在不同的表中?

    用于股票信息的 MySQL 表设置

    grails - 无法测试在 LAN 内具有 oauth autontication 的 Grails 应用程序

    android - 无效的 OAUTH 访问 token ,当使用应用程序访问 token 时,Android

    language-agnostic - 在 OAuth2.0 中使用 Facebook 访问 token 作为资源所有者凭据

    mysql - 什么时候不对表进行分区(MySQL)?

    android - android 中的 woocommerce rest api OAuth 身份验证

    php - 反向代理背后的 Oauth 提供者

    php - Zend Framework Oauth 提供者