OAuth令牌的特征是什么?

OAuth令牌的特征是什么?,oauth,Oauth,一个oauth访问令牌和oauth访问机密可以有多少个字符?允许的字符是什么?我需要将它们存储在数据库中。我不确定是否有任何明确的限制。这个 也就是说,OAuth令牌通常作为url参数传递,因此具有一些相同的限制。ie需要正确编码,等等。OAuth令牌在概念上是一个任意大小的字节序列,而不是字符序列。在URL中,它使用标准URL转义机制进行编码: unreserved = ALPHA, DIGIT, '-', '.', '_', '~' 所有未保留的内容都会被编码 我不确定您是否只讨论了传

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

我不确定是否有任何明确的限制。这个
也就是说,OAuth令牌通常作为url参数传递,因此具有一些相同的限制。ie需要正确编码,等等。

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

  unreserved = ALPHA, DIGIT, '-', '.', '_', '~'
所有未保留的内容都会被编码


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

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

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

引自:

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

“当然,我们敦促服务器出错 为了谨慎起见,请使用 最长的秘密是合理的。”

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


请参阅:

如果您阅读了规范,它会说

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

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

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


授权:Bearer

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

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

HTTP头的有效字符由指定。或者,您可以检查一些常用HTTP客户端库的HTTP头验证代码,例如,请参见HTTP框架的头。checkNameAndValue()util:


这还不是全部。我不会包括HTTP头分隔符(;和其他许多)和空格符号(''和'\t')以及双引号(“)(请参阅)因为在HTTP头中使用之前需要转义OAuth令牌。通常,令牌是由人在curl测试请求中使用的,因此好的令牌生成器不会添加这样的字符。但在做出任何假设之前,您应该检查哪些字符可能会生成您的服务正在使用的OAuth令牌生成器。

Google+使用斜杠“/对于它的OAuth 2.0“代码”也是:
code=4/rymOMYEWum5IN20h0mXts9in0mRf
这个答案中的“我们”是谁?我指的是“开发者”是“我们”