如何使用oAuth验证宁静的web服务
问题描述:
我想为每个请求在RESTful web服务中进行验证。我已经阅读了关于网站OAuth的范围。 我应该在数据库中存储什么或者哪个令牌密钥或访问密钥需要使用数据库进行检查?我有REST web服务和android应用程序来调用web服务。因此,Web服务作为服务提供商,用户登录是用户和Android应用程序,如Oauth站点中描述的消费者。所以,如果从像如何使用oAuth验证宁静的web服务
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服务的Android用户请求如何检查与数据库或哪个键将使用检查?是签名吗?
答
请阅读http://oauth.net/core/1.0/ ..特别是附录A.2至A.4。 它描述了当服务无法访问时发生的“握手”,然后将用户重定向到身份验证网站,然后返回到回调URL。
正如您所问,在A.4中,是的,服务会检查签名并使用访问令牌进行回复。
您是否正在考虑对每个请求进行完全身份验证,或者使用OAuth设置将在请求之间使用的会话(当然,在应用程序的范围内)?这很重要,因为OAuth相当昂贵,而REST往往需要*许多*请求。 OTOH,每个请求的身份验证使客户端更加简单,并删除多条攻击路由;这是一个平衡事情的问题... – 2011-05-19 16:38:28