Golang单腿/双腿oauth 1.0a认证

时间:2016-05-11 07:05:03

标签: curl go oauth authorization signature

我正在寻找一个库来帮助我通过oauth 1.0a使用单步认证来验证服务。我只有consumerKeyconsumerSecretresource url

curl,PHP和Python提供了一些示例。我正在尝试使用GoLang进行身份验证。

curl
-X GET
-H "Content-Type: application/json"
-H 'Authorization: OAuth realm="https://example.com",oauth_consumer_key="1234-5678-91011",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1424789327",oauth_nonce="abcde",oauth_version="1.0",oauth_signature="3iwWBq%2FHaBcDl9Q1o%2BjAc%2BKz8J%2FE%3D"'
https://example.com

PHP

require 'vendor/autoload.php';

use Guzzle\Http\Client;
use Guzzle\Plugin\Oauth\OauthPlugin;

$client = new Client('https://example.com');
$oauth = new OauthPlugin(array(
    'consumer_key'    => '1234-5648-9101',
    'consumer_secret' => 'abcde',
));
$client->addSubscriber($oauth);

$response = $client->get('/')->send();
echo $response->getBody();

的Python

from requests_oauthlib import OAuth1Session

key = '1234-5648-9101'
secret = 'abcde'
example = OAuth1Session(key, client_secret=secret)
url = 'https://example.com'
r = example.get(url)
print r._content

我查看了Golang中的许多oauth库。

https://github.com/mrjones/oauth,要求:RequestTokenUrlAccessTokenUrlAuthorizeTokenUrlcallback url

http://godoc.org/github.com/nhjk/oauth,要求:tokenKeytokenSecret以及consumerKeyconsumerSecret

是否有一个我可以使用的库,这将允许我使用该服务进行身份验证,就像上面的php和python示例一样容易?如果我可以使用上面的库之一,有人可以提供代码片段示例吗?我尝试的任何东西都会返回未经授权的回复。

1 个答案:

答案 0 :(得分:0)

Golang对框架有不同的理由,原因之一是,你不需要它们。您可以使用标准http包轻松设置响应的标头。当你掌握它时,你就会意识到你正在处理第一类对象,这正是那些其他语言框架试图实现的。

像这个功能

  func saveHandler(w http.ResponseWriter, r *http.Request) {
    // allow cross domain AJAX requests
    w.Header().Set("Access-Control-Allow-Origin", "*")
}