Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要创建一个 REST api 来首次对用户进行身份验证,并根据该用户检索其他信息以供后续调用。如果我没记错的话,Restful 服务是无状态的,因此不需要在服务器端存储用户信息。我的问题是如何保证在没有会话的情况下对所有后续调用进行用户身份验证?
需要此服务来创建可以在移动设备上显示信息的 android 应用程序。
您可以使用广泛使用的标准OAuth 。
另一种选择是通过 SSL 使用 BASIC 身份验证。任何体面的 HTTP 库都将支持 BASIC 身份验证。客户端将在第一次发出请求时受到质询。后续请求需要通过安全线路发送 BASIC auth 标头。
有一种方法是您将秘密传递给您的客户端并使用 HMAC-SHA256 将 URL 参数的哈希发送到服务器。亚马逊就是这样做的,并且有一篇文章介绍了如何做到这一点。它不像 OAuth 那样复杂。
有很多方法可用,但 IMO 最好的方法是生成 AuthToken 服务器端并在成功登录后将其返回给客户端。然后,客户端在向服务器发送的每个请求中都包含此内容。
我通常做的是创建一个密钥的 MD5 散列和用户的 id-用户的用户名-用户的密码-和当前日期时间。然后我将令牌和当前日期时间存储在数据库中。在查找之后,我解码令牌并将数据点与 db 值进行比较,如果它们匹配,用户就很好。这种方式是无状态的并且易于扩展。