可以通过 oauth 处理登录的 REST 客户端
Posted
技术标签:
【中文标题】可以通过 oauth 处理登录的 REST 客户端【英文标题】:REST client that can handle login via oauth 【发布时间】:2011-01-05 10:52:23 【问题描述】:我在基于 Rest API 的系统上担任测试人员。我的部分工作是使用不同的应用程序将文件 POST 到 Rest API,然后通过 Rest Client 直接访问 API 以验证 XML 是否正确。
到目前为止,我一直在使用 RESTClient firefox 插件。
但是现在我们正在摆脱旧的登录以支持 Oauth。这一切都很好,但它使测试变得更加困难,因为我不能(不知道怎么做?)如何使用我正在使用的 REST 客户端访问 Rest API。而且我不知道有任何其他 REST 客户端可以做到这一点。
我需要一个/REST 浏览器。
更新: 你好。我仍在寻找可以处理 Oauth 的更好的 REST 客户端。所以如果你知道任何我会很感激下面的帖子。
【问题讨论】:
【参考方案1】:我是 RESTClient 的作者,我已经开始开发新版本的 RESTClient(版本 1.4.0)。新版本将支持 oAuth 2.0。并且会在四月份发布。
【讨论】:
你说的是 Firefox 插件吗?我注意到很多 Rest Client 被称为 RESTClient。例如 WizzTools 有一个软件也叫 RESTClient code.google.com/p/rest-client 是的,我刚刚向Mozilla提交了一个新版本的RESTClient,但我还没有完成oAuth 2.0。我希望我能在这个月完成它。【参考方案2】:我也在寻找这样的东西,由于这个问题,事情似乎有所进展。
我正在使用 Chrome,REST 控制台扩展对我来说非常有用:
https://chrome.google.com/webstore/detail/cokgbflfommojglbmbpenpphppikmonn
【讨论】:
我会推荐 Chrome POSTMAN 而不是 RESTClient,因为它几乎没有导致无效签名的错误 ((github.com/chao/RESTClient/issues/105))。【参考方案3】:原来RESTClient确实支持oauth但是新版本还没有发布。
从 sourceforge 查看最新的代码 http://sourceforge.net/projects/restclient/develop 并使用这些文件替换您的 RESTClient(应该在您的 firefox 配置文件目录中找到http://support.mozilla.com/en-US/kb/Profiles#How_to_find_your_profile)。
注意:我不得不破解源代码并删除“领域”参数,因为我们的系统不想要它。根据 Oauth 规范,领域是可选的,我已要求 RESTClient 的开发人员在未来的版本中使其成为可选。
【讨论】:
【参考方案4】:没有什么可以阻止您在使用 OAuth 身份验证时继续手动测试 REST API。 OAuth 只要求您发送其他参数:首先,您协商 OAuth 舞蹈以获取请求令牌并将其交换为访问令牌,然后每个请求都有必要的 OAuth parameters(oauth_consumer_key
、oauth_token
、@987654326 @、oauth_signature
、oauth_timestamp
和 oauth_nonce
)。您需要使用单独的工具进行签名(除非您正在测试的产品愿意使用PLAINTEXT
作为签名方法),但您可以简单地将所有这些值手动复制到您当前的手动工具中.
如果这听起来像是很多工作,那你是对的!我认为这是切换到自动化测试的好时机。 Libraries exist 让大多数语言以编程方式使用 OAuth 服务,这将处理所有这些参数并为您签名。您可以构建一个通用工具,让手动测试人员手动指定 URL 和参数,或者更进一步,编写一些自动完成所有生成和验证的东西。
更新:为了从命令行进行一些探索性测试,拥有一个类似curl
的工具来处理一些 OAuth 参数和签名肯定会有所帮助。查看oauth-proxy,它可能对您有用——它正好用于在命令行上探索 API。或者,您可能会发现,对于您的特定探索,您希望围绕 oauth-proxy 构建一个脚本,或者在众多不同语言的 OAuth 库之一之上构建一个工具。
【讨论】:
感谢您的好回答。我担心使用我们当前的工具会很麻烦,您确认了。我们已经进行了自动化测试,但我们还需要使用 REST 客户端进行手动探索性测试。我不敢相信没有一个开源工具。 是的,这是一个很好的观点,@Jonas。有时您需要对 API 进行手动探索性测试。我已将 oauth-proxy 的链接添加到可能对您有用的答案中,我很想知道其他此类便利工具。 感谢您的所有帮助。我设法找到了一个可以做我需要的工具。请参阅下面的答案。以上是关于可以通过 oauth 处理登录的 REST 客户端的主要内容,如果未能解决你的问题,请参考以下文章
使用 facebook 登录并使用 oauth 2.0 对 REST api 调用进行身份验证
带有 spring-security 的 OAuth2 - 通过 HTTP 方法限制 REST 访问
如何使用 oauth2 通过 REST Web 服务进行身份验证