代码之家  ›  专栏  ›  技术社区  ›  Don Neufeld

OAuth令牌的特征是什么?

  •  22
  • Don Neufeld  · 技术社区  · 15 年前

    一个可以有多少个字符 OAuthAccess 令牌和 OAuth访问机密 是什么?允许的字符是什么?我需要将它们存储在数据库中。

    7 回复  |  直到 7 年前
        1
  •  11
  •   BaroqueBobcat    15 年前

    我不确定有什么明确的限制。这个 spec doesn't have any . 也就是说,OAuth令牌通常作为URL参数传递,因此具有一些相同的限制。IE需要正确编码等。

        2
  •  4
  •   ZZ Coder    15 年前

    OAuth未指定令牌的格式或内容。我们只使用加密的名称-值对作为令牌。您可以在token中使用任何字符,但如果token是URL安全的,则处理起来要容易得多。我们通过使用URL安全base64对密文进行编码来实现这一点。

        3
  •  2
  •   ariefbayu    13 年前

    正如大多数人已经指出的那样。OAuth规范并没有给你准确的指示,但是他们说…

    引用自: http://tools.ietf.org/html/draft-hammer-oauth-10#section-4.9

    “服务器应该小心分配 分享足够长的秘密, 足够随机的,来抵抗这样的 攻击时间至少为 分享秘密的时间 有效。”

    “当然,我们会敦促服务器出错。 注意,使用 最长的秘密是合理的。”

    另一方面,您应该考虑浏览器的最大URL长度:

    见: http://www.boutell.com/newfaq/misc/urllength.html

        4
  •  2
  •   Abhishek Tyagi    11 年前

    如果你读了说明书,上面写着,

    授权服务器向注册的客户端发出一个客户端
    标识符-表示注册的唯一字符串
    客户提供的信息。客户端标识符不是
    秘密;它向资源所有者公开,不能使用
    仅用于客户端身份验证。客户端标识符是唯一的
    授权服务器。

    客户端标识符字符串大小未被定义
    规范。客户应避免对
    标识符大小。授权服务器应记录大小
    它发出的任何标识符。

    其次,访问令牌应该作为头发送,而不是作为URL参数发送。

    授权:持有人<token>。

        5
  •  1
  •   Martin v. Löwis    15 年前

    OAuth令牌在概念上是一个任意大小的字节序列,而不是字符。在URL中,它使用标准的URL转义机制进行编码:

      unreserved = ALPHA, DIGIT, '-', '.', '_', '~'
    

    不是所有未保留的内容都会被%编码。

    我不确定您是否只讨论传递的oauth_令牌参数。通常,还需要存储和传输其他参数,例如OAuth_token_secret、OAuth_signature等。其中一些参数具有不同的数据类型,例如,OAuth_timestamp是表示1970年以来秒数的整数(以十进制ASCII数字编码)。

        6
  •  0
  •   kinORnirvana    7 年前

    OAuth令牌的有效字符受HTTP头值限制,因为OAuth令牌经常在HTTP头“authorization”中发送。

    HTTP头的有效字符由指定 https://tools.ietf.org/html/rfc7230#section-3.2.6 . 或者,您可以检查一些流行的HTTP客户端libs的HTTP头验证代码,例如,请参见 headers.checkname和value() OKHTTP框架的使用: https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/Headers.java

    这不是全部。我不包括HTTP头分隔符(;和许多其他分隔符)、空白符号(“”和'\t')和双引号(“)(请参见 https://tools.ietf.org/html/rfc7230第3.2.6节 )因为在HTTP头中使用之前需要转义OAuth令牌。在curl测试请求中,人们经常使用令牌,因此好的令牌生成器不会添加此类字符。但是,在做出任何假设之前,您应该检查哪些字符可能会生成您的服务使用的OAuth令牌生成器。

        7
  •  -4
  •   Andy Jones    10 年前

    具体来说,即使OAuthScript没有任何说明,如果您使用Java和MySQL,那么它将是16个字符,因为我们通常使用UUID生成令牌并将其作为二进制(16)存储在数据库中。我知道这些细节,正如我最近使用OAuth进行开发一样。