使用base64编码生成Oauth授权令牌

时间:2019-04-29 10:09:09

标签: oauth base64 encode

我正在尝试按照该指南为YAHOO DSP API生成Oauth身份验证令牌。

  

Base64编码是一种将二进制数据编码为文本的方式,以便可以轻松地在网络上无错误地传输数据。

     

在此步骤中,您将获取YDN控制台为您生成的客户端ID和客户端密码,并使用base64协议对其进行编码。您可以使用诸如base64encode.org之类的在线编码服务。

     

无论您使用哪种服务,请确保在CLIENT_ID和CLIENT_SECRET键上没有空格,并用冒号(即CLIENT_ID:CLIENT_SECRET)分隔CLIENT_ID和CLIENT_SECRET。

     

现在在本指南中将生成的值引用为ENCODED(CLIENT_ID:CLIENT_SECRET)。

举一个例子:

  

CLIENT_ID = dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA–p>      

CLIENT_SECRET = a7e13ea3740b933496d88755ff341bfb824805a6

     

AUTHORIZATION = ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5BLS06YTdlMTNlYTM3NDBiOTMzNDk2ZDg4NzU1ZmYzNDFiZmI4MjQ4MDVhNg ==

使用推荐的网站,我得到的授权错误。

我都尝试过一次对整个事物进行编码。编码(CLIENT_ID:CLIENT_SECRET),每个元素分别进行编码(CLIENT_ID):encode(CLIENT_SECRET)。

  

尝试编码整个内容:   ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5B4oCTOiBhN2UxM2VhMzc0MGI5MzM0OTZkODg3NTVmZjM0MWJmYjgyNDgwNWE2

     

尝试对每个元素进行编码:   ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnlaWFFtZUQwME5B4oCT:YTdlMTNlYTM3NDBiOTMzNDk2ZDg4NzU1ZmYzNDFiZmI4MjQ4MDVhNg ==

     

预期结果:   ZGoweUptazlOMnBJYXpsc1prMWlUekl4Sm1ROVdWZHJPV1ZFVW1wVk1GcFdUWHBSYldOSGJ6bE5RUzB0Sm5NOVkyOXVjM1Z0WlhKelpXTnLZZYYNZNYZNYZNYZNYZNYZNYZYYZYYZNYZNYZYZYYZNYZYZYYZYZYYZNYZYZYYZYZYZYYZYZNYZYZYZYZYYZYZYZYZYZYKYZYYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYYZYYZYYZYZYYZYZYYZYZYYZYZYZYWZYZYW

“每个元素”与预期结果之间的区别只是与client_ID和冒号结尾相对应的几个字符。 B4oCT:应为BLS06。

链接到完整的文档: https://developer.yahoo.com/dsp/api/docs/authentication/tokens.html https://developer.yahoo.com/dsp/api/docs/traffic/info/sandbox.html

更新:

Client_ID的最后一个字符是'–'。这是某种非标准字符,在utf-8和Windows 1258中被解释为两个破折号,即'-'。

1 个答案:

答案 0 :(得分:0)

另一个不同的是,要注意的是,当解密预期的输出时,您的客户端ID为

dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA--

代替

dj0yJmk9N2pIazlsZk1iTzIxJmQ9WVdrOWVEUmpVMFpWTXpRbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmeD00NA–

注意,末尾有两个“-”。

OAuth客户端身份验证令牌始终使用以下格式的Base64编码生成

Base64_Encoding(CLIENT_ID:CLIENT_SECRET)

大多数用法执行此Base64编码,编码类型为“ UTF-8”。

看起来,雅虎需要此令牌使用不同的编码。在“ https://www.base64encode.org/”上,如果尝试使用“ Windows-1254”作为目标字符集对“ CLIENT_ID:CLIENT_SECRET”进行编码,则会收到预期的结果。因此,看起来这里的编码和解码都完成了,将“ Windows-1254” 字符集保留在适当的位置。