我有一个Restful Web服务API,由不同的第三方使用。该API的一部分受到限制(您需要用户名/密码才能访问它)。我想知道什么是实现身份验证的最佳方式?Restful Web服务身份验证
我使用的是https,因此通信是加密的。我有两个想法:
- 在用户开始使用(受限)服务之前,它使用POST发送用户名/密码(因为正在使用https来加密凭据)。登录成功后,服务器发回与此用户名匹配的随机一次性值(随机数)。当发出下一个请求时,客户端发送先前返回的现时值。服务器匹配用户名和随机数,并沿请求的数据返回新的随机数。每个新请求都使用新的随机数。基本上,这是一个Digest访问认证的轻量级版本。
- 由于此API是从第三方使用的,因此每个(受限)请求都可以使用用户名/密码。由于正在使用https,它们将被加密。这种方法的崩溃是这样的事实,这不会是Restful兼容(POST会被永远使用)。
我更接近选择第一种方法(它是Restful兼容,相对容易实现,XML,JSON或HTML可以使用而不用改变任何东西),但我想看看你的意见是什么?你有什么建议:第一,第二或第三种方法?
顺便说一句,我在服务器端使用Python。
最好的答复任何措施。如果你可以在这里给出一个很好的算法介绍,我相信你很快就会得到大量的票数!我认为,其中最重要的一点是:“您首先使用您的秘密访问密钥来创建签名密钥,签名密钥的范围是特定区域和服务,另外,签名密钥在创建后七天过期。签名密钥的范围和生命周期是有限的,如果签名密钥受到威胁,数据的风险就会降低。“ – Domi 2015-04-22 16:08:42