2013-04-07 36 views
2

我需要创建一个REST API来第一次验证用户,并根据此用户检索其他信息以用于后续调用。如果我没有弄错Restful服务是无状态的,因此不需要存储用户信息服务器端。我的问题是,如何保证所有后续呼叫没有会话的用户身份验证?在每次通话中稳定的Web服务API用户身份验证

需要此服务才能创建可在手机上显示信息的Android应用程序。

+0

可能很好地阅读OAuth2 - https://developers.google.com/accounts/docs/OAuth2 – 2013-04-07 16:49:37

+0

我在我们的应用程序中做了同样的事情。第一个用户通过身份验证,会话值从服务器返回。然后,此会话值将存储在应用程序中,并发送每个呼叫以识别用户。它运作良好。 – vandzi 2013-04-07 17:44:22

回答

0

您可以使用OAuth这是一个广泛使用的标准。

另一种选择是使用基于SSL的BASIC认证。任何体面的HTTP库都会支持BASIC认证。第一次提出请求时,客户端将受到质疑。随后的请求需要通过安全线路发送BASIC认证头。

有一种方法将密钥传递给客户端,并使用HMAC-SHA256将URL参数的哈希值发送到服务器。亚马逊这样做,并且有an article that covers这是如何完成的。它并不像OAuth那么复杂。

0

有很多方法可用,但IMO最好的办法是生成AuthToken服务器端,并在成功登录后将其返回给客户端。然后客户端将这个请求包含在服务器的每个请求中。

我典型的做法是创建一个密钥的MD5哈希值和用户的用户名 - 用户的用户名 - 用户的密码 - 以及当前的日期时间。然后我将令牌和当前日期时间存储在数据库中。在查找之后,我解码令牌并将数据点与数据库值进行比较,如果它们匹配,则用户是好的。这种方式是无状态的,易于扩展。