RESTful认证方案

时间:2011-11-16 08:09:24

标签: rest restful-authentication

我需要为RESTful架构实现身份验证方案。我读过的几篇文章包括使用HTTP的基本身份验证和使用Cookie的会话管理。

但是我不太了解cookie的使用。我理解的是用户首先发送凭据。服务器检查凭据是否正常。如果是,则服务器生成授权令牌并将其放入cookie中。然后,在每个请求上,服务器检查cookie中令牌的有效性。

但是服务器如何知道cookie的内容是有效的。它是将它存储在某个地方然后比较它吗?

2 个答案:

答案 0 :(得分:3)

这里的关键点是授权令牌。生成一个并发送回客户端时,您将auth令牌与用户名一起存储在一个数据库中。您将身份验证令牌存储在cookie中。后续请求中的客户端会向您发送包含身份验证令牌的用户名和cookie。您根据提供的用户名验证此令牌,然后根据需要执行操作。

但是,请注意,设置cookie会使您的Web服务调用状态并且无法实现REST的目的。

要实现身份验证/授权,请将其作为响应值发送回来,而不是在cookie中设置授权令牌。客户端读取auth令牌的值,然后在每个REST请求中提供相同的值作为请求主体的参数。因此,您不需要设置cookie。您可以将其称为基于OAuth的API访问中实现的简化版本。

答案 1 :(得分:1)

我不是专家,但理解这一点的一个很好的起点是哈特尔书中的section on Sessions

如果我没弄错,它的工作原理如下:
创建令牌时,它使用一个公式,例如用户名和一起加密的唯一用户密钥(salt)。用户名和salt都存储在数据库中,salt对该用户是唯一的。因此,正如您要比较密码是否匹配一样,要检查cookie的有效性,您需要重新创建令牌并将其与cookie中的令牌进行比较。如果匹配,则表明正确的用户已登录并因此已获得授权。

希望这会有所帮助,或者至少指出正确的方向:)