【发布时间】:2011-04-05 06:34:51
【问题描述】:
我有一个 Restful Web 服务 API,被不同的 3rd 方使用。该 API 的一部分受到限制(您需要用户名/密码才能访问它)。我想知道实现身份验证的最佳方式是什么?
我使用的是 https,所以通信是加密的。我有两个想法:
- 在用户开始使用(受限)服务之前,它使用 POST 发送用户名/密码(因为使用了 https,凭据已加密)。登录成功后,服务器发回与该用户名匹配的随机一次性值(nonce)。当发出下一个请求时,除了用户名之外,客户端还会发送先前返回的 nonce。服务器匹配用户名和随机数,并在请求的数据旁边返回新的随机数。每个新请求都使用新的 nonce。基本上,这是 Digest 访问身份验证的轻量级版本。
- 由于此 API 是从第 3 方使用的,用户名/密码可用于每个(受限)请求。由于正在使用 https,因此它们将被加密。这种方法的缺点是它不符合 Restful 标准(将始终使用 POST)。
我更接近于选择第一种方法(它符合 Restful,相对容易实现,无需更改任何内容即可使用 XML、json 或 html),但我想看看您的意见是什么?您有什么建议:第一种、第二种或第三种方法?
顺便说一句,我在服务器端使用 Python。
【问题讨论】:
标签: web-services authentication restful-authentication rest