很抱歉,如果有人问了几次,但是找不到可靠的答案。
我想保护HTML5应用程序和PHP Web服务之间的登录过程和会话(种类)。我向用户显示一个使用HTTPS与服务器的登录屏幕,然后为客户端提供一个随机GUID,该GUID存储在数据库中,包含登录时间和上次请求时间,以及我为其存储的实际用户ID在用户表上。因此GUID可能每次都不同,但它在登录时映射到的用户ID只能在服务器端看到。
在身份验证方面,我感到很不舒服,而且从来没有真正针对像这样的Web服务处理HTML5 / JS应用程序。我通常开发ASP .NET站点并使用会话。
我最近发现了JWT令牌,它对客户端中包含的令牌字符串中的数据存储进行加密,并传递给服务器或从服务器传递。这比我正在做的更安全吗?我现在应该使用JWT而不是这个GUID映射吗?
我的目标是向Web场发送无会话请求,该请求可以将您带到任何特定的Web服务器,并且验证请求以查看该请求是否来自有效的登录用户。 / p>
欢迎任何建议:)。
感谢。
答案 0 :(得分:1)
如果您不对令牌中的敏感数据进行编码,则使用JWT令牌是完全安全的,因为令牌可以在没有秘密的情况下进行解码。
您可以做的是拥有两个密钥对(私有/公共)RSA密钥。 专用于编码令牌并在登录成功时将其发送到客户端
客户端将令牌保存为cookie,即HTML5 localstorage e.t.c, 在每个请求中,客户端通过请求标头将令牌传递回Web服务器,然后Web服务器使用公钥验证令牌。同时解码令牌并从令牌获取GUID,然后继续处理请求。
此工作流程可以跨多种服务器端语言工作,因为它们有许多JWT库。