最多可以有多少个字符 授权访问 令牌和 oauth 访问秘密 是以及允许的字符是什么?我需要将它们存储在数据库中。

有帮助吗?

解决方案

我不知道有任何明确的限制。该规格没有任何。 也就是说,OAuth凭证往往是作为URL参数传递等方面有一些相同的限制。即需要适当编码,等等。

其他提示

的OAuth没有指定令牌的格式或内容。我们简单地使用加密名称 - 值对的令牌。您可以使用令牌任何字符,但它更容易处理,如果令牌网址安全。我们通过一个安全的网址Base64编码的密文实现这一目标。

由于大多数人已经指出。基于OAuth的认证规范不给你明确的方向,但他们不说......

HTTP:

这引//tools.ietf。组织/ HTML /草案-锤OAuth的10#部-4.9

  

“服务器应该小心分配   共享的秘密,其是足够长的时间,   和足够的随机,抵制这种   对中的至少长度的攻击   时间,所述共享秘密是   有效的“。

     

“。当然,服务器被敦促犯错   谨慎的一面,并使用   最长秘密合理“。

在另一方面,你应该考虑浏览器的网址的长度上限:

请参阅: http://www.boutell.com/newfaq/misc/urllength html的

如果你读的规格,它说,

  

在授权服务器发出注册客户端一个客户端点击   标识符 - 表示注册结果的唯一字符串   由客户端提供的信息。客户端标识符不是结果   秘密;它被暴露在资源拥有者,不得使用结果   单独客户端验证。客户标识符是唯一的结果   授权服务器。

     

在客户端标识符串大小未定义通过该点击   规格。客户应避免对结果的假设   标识符的大小。授权服务器应记录大小点击   任何标识符的它发出。

其次,访问令牌应作为发送报头,而不是作为一个URL PARAM。

授权:承载<令牌>

OAuth凭证是概念性字节,而不是字符的任意大小的序列。在URL中,它就会被使用标准URL转义机制编码的:

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

一切未未预留获取%编码

我不知道你是否只是谈论被传来传去的的oauth_token参数。通常情况下,需要存储和传输,以及,例如oauth_token_secret,oauth_signature等它们中的一些具有不同的数据类型的附加参数,例如,oauth_timestamp是表示自1970年以来秒的整数(以十进制ASCII数字编码)。

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

HTTP 标头的有效字符由以下方式指定 https://tools.ietf.org/html/rfc7230#section-3.2.6. 。或者,您可以检查一些流行的 HTTP 客户端库的 HTTP 标头验证代码,例如参见 headers.checkNameAndValue() OkHttp框架的util: https://github.com/square/okhttp/blob/master/okhttp/src/main/java/okhttp3/Headers.java

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

要具体,即使OAuth规范不说什么,如果你正在使用Java和MySQL那么这将是16个字符,因为我们使用UUID通常生成的令牌,并在数据库中存储为BINARY(16)。我知道这些细节,因为我最近做使用OAuth的发展。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top