如何使用oAuth验证restful web服务

6
我想为每个请求在RESTful web服务中进行身份验证。我已经阅读了有关网站上OAuth的范围。那么我应该在数据库中存储什么,或者需要检查哪个令牌密钥或访问密钥?我有一个REST web服务和一个调用web服务的android应用程序。因此,Web服务作为服务提供商提供服务,UserLogin是用户,Android应用程序就像Oauth网站中描述的那样作为消费者。所以,如果用户从android请求,如下所示:
GET /username/a.jpg HTTP/1.1
Host: localhost:8080
Authorization: OAuth realm="http://localhost/username/a.jpg",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_token="nnch734d00sl2jdk",
    oauth_nonce="kllo9940pd9333jh",
    oauth_timestamp="1191242096",
    oauth_signature_method="HMAC-SHA1",
    oauth_version="1.0",
    oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D" 
但是从服务器端,也就是web服务端,如何与数据库进行检查,或者使用哪个密钥进行检查?是签名吗?

你是否考虑为每个请求进行完整认证,或者使用OAuth设置会话以在请求之间使用(当然是在应用程序范围内)?这很重要,因为OAuth相当昂贵,REST通常需要许多请求。另一方面,每个请求的身份验证使得客户端更容易正确,并消除了大量攻击路径;它是一个权衡的问题... - Donal Fellows
1个回答

4
请阅读 http://oauth.net/core/1.0/ 的附录A.2到A.4,它描述了当服务无法获取访问权限时发生的“握手”,然后将用户重定向到身份验证网站,然后返回到回调URL。如您所问,在A.4中,服务会检查签名并回复访问令牌。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接