你能推荐一种生成访问令牌的方法吗?

时间:2013-06-10 12:40:02

标签: oauth token access-token

我的团队正在编写一个包含服务器和客户端的Web应用程序,我认为将客户的uidpassword发送给服务器的每个请求显然都不可取。

我正在寻找一个很好的选择来解决这个问题,也许像Oauth那样,是否有任何有效的方法?

例如,用户名lyj和密码123456的用户请求从我的客户端应用程序登录,服务器应检查是否允许,登录成功后,客户端可以发送更多请求获取服务器的其他资源。 我的问题是,除了用户名和密码,服务器和客户端之间是否有办法确定谁是这个人,是否有任何建议在服务器和客户端之间传输access token

2 个答案:

答案 0 :(得分:1)

如果没有关于您的平台和技术的大量信息,我只能尝试一般性答案。有几种方法可以根据您的使用方式生成令牌。 MD5是一个成熟的算法,您可以使用它来生成一个使用用户名和电子邮件等的令牌。请记住,您无法解密MD5字符串。因此,要进行任何类型的验证,您必须使用原始参数重新创建字符串,然后执行检查。如果你想要一个可以反转的哈希,你可以看看像base-64这样的东西。

MD6和base-64都可以作为您可能正在使用的任何后端的库轻松使用。

*更新

查看您与无状态客户端合作的评论,以下是使用令牌的可能方法。

  1. 客户端首次执行登录。 (最好是HTTPS)

  2. 服务器执行验证并使用MD5(或您选择的任何其他)使用(用户名+电子邮件+ ip_address + time_stamp)生成令牌并将其发送回客户端

  3. 服务器使用userID,ip_address和time_stamp

  4. 在数据库的表中为此客户端创建新会话
  5. 客户端将此令牌传回以备将来的任何请求。

  6. 当客户端传递令牌时,服务器从数据库中检索会话并生成MD5哈希并将其与发送的令牌客户端进行比较。如果它是相同的你就是好的。

  7. 您还可以将时间戳值用作令牌的有效期窗口,以使它们永久无效。除非有人可以同时创建相同的MD5哈希值,直到毫秒,否则无法重新创建此令牌

答案 1 :(得分:0)

现代Web应用程序容器已嵌入会话跟踪功能。当然总有cookie的选择。由您来决定实施......