OAuth 1.0a签名生成器 - 高效且符合规范的解决方案
OAuth 1.0a签名生成器是一个为Node.js和浏览器环境设计的强大工具,严格按照RFC 5843、Errata ID 2550以及社区规格的标准实施。
安装
使用npm
安装:
npm install oauth-signature
使用bower
安装:
bower install oauth-signature
在你的index.html
中添加一个<script>
标签:
<script src="/bower_components/oauth-signature/dist/oauth-signature.js"></script>
使用方法
通过调用以下函数来生成OAuth签名:
oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret, options)
tokenSecret
是可选参数options
也是可选参数
默认的options
参数如下:
var options = {
encodeSignature: true // 默认会按照RFC 3986编码签名
}
示例
以下是根据参考样本生成签名的一个示例,该参考样本定义于:
var httpMethod = 'GET',
url = 'http://photos.example.net/photos',
parameters = {
... // 示例参数
},
consumerSecret = 'kd94hf93k423kf44',
tokenSecret = 'pfkkdhi9sl3r4s00',
encodedSignature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret),
signature = oauthSignature.generate(httpMethod, url, parameters, consumerSecret, tokenSecret, { encodeSignature: false });
encodedSignature
变量将包含经过RFC 3986编码并以BASE64编码的HMAC-SHA1哈希,可用于请求中的查询参数。而signature
变量将仅包含未经编码的BASE64 HMAC-SHA1哈希。
调用受保护资源
使用生成的签名填充oauth_signature
参数以签署受保护的资源,如RFC所述。
例如,带有查询字符串参数的GET请求:
http://photos.example.net/photos?file=vacation.jpg&size=original&...
优势
该项目具有广泛覆盖OAuth规范所有角落情况的测试用例(包括RFC 5843和OAuth.net社区基础规范)。
查看测试文件src/app/signature.tests.js
以了解更多详情。
如何运行测试?
- 在浏览器中打开
src/test-runner.html
。 - 或者在Node环境中执行
npm test
。
演示实例
您可以访问现场版本的OAuth签名页面http://bettiolo.github.io/oauth-reference-page/进行实验。并且可以利用这个回声OAuth端点:http://echo.lab.madgex.com/来进行实际操作。
维护更新
- 更新uri-js/js-url:
npm run update
- 更新chai/mocha: 通过
npm
更新后,也需手动更新test-runner.html
- 发布新版本:
npm version [major|minor|patch]
git push
git push --tags
总之,这个开源项目提供了一种简洁、高效和标准化的方式来生成OAuth 1.0a签名,对于开发者来说,无论是在Node.js服务器还是前端浏览器应用,都是理想的工具选择。其强大的测试覆盖,使得它成为可靠和安全的API认证方案。立即加入我们的行列,开始享受OAuth签名生成器带来的便利吧!