我的团队正在编写一个包含服务器和客户端的Web应用程序,我认为将客户的uid
和password
发送给服务器的每个请求显然都不可取。
我正在寻找一个很好的选择来解决这个问题,也许像Oauth
那样,是否有任何有效的方法?
例如,用户名lyj
和密码123456
的用户请求从我的客户端应用程序登录,服务器应检查是否允许,登录成功后,客户端可以发送更多请求获取服务器的其他资源。
我的问题是,除了用户名和密码,服务器和客户端之间是否有办法确定谁是这个人,是否有任何建议在服务器和客户端之间传输access token
?
答案 0 :(得分:1)
如果没有关于您的平台和技术的大量信息,我只能尝试一般性答案。有几种方法可以根据您的使用方式生成令牌。 MD5是一个成熟的算法,您可以使用它来生成一个使用用户名和电子邮件等的令牌。请记住,您无法解密MD5字符串。因此,要进行任何类型的验证,您必须使用原始参数重新创建字符串,然后执行检查。如果你想要一个可以反转的哈希,你可以看看像base-64这样的东西。
MD6和base-64都可以作为您可能正在使用的任何后端的库轻松使用。
*更新
查看您与无状态客户端合作的评论,以下是使用令牌的可能方法。
客户端首次执行登录。 (最好是HTTPS)
服务器执行验证并使用MD5(或您选择的任何其他)使用(用户名+电子邮件+ ip_address + time_stamp)生成令牌并将其发送回客户端
服务器使用userID,ip_address和time_stamp
客户端将此令牌传回以备将来的任何请求。
当客户端传递令牌时,服务器从数据库中检索会话并生成MD5哈希并将其与发送的令牌客户端进行比较。如果它是相同的你就是好的。
您还可以将时间戳值用作令牌的有效期窗口,以使它们永久无效。除非有人可以同时创建相同的MD5哈希值,直到毫秒,否则无法重新创建此令牌
答案 1 :(得分:0)
现代Web应用程序容器已嵌入会话跟踪功能。当然总有cookie的选择。由您来决定实施......