我正在开发一个restful web服务,它需要安全保护。我使用的是令牌系统,其中客户端通过请求头传递给他们唯一的令牌。该服务必须通过HTTPS调用。
我已经看过几篇文章对令牌进行加密,但是这样做有什么真正的好处吗,因为HTTPS当然会加密令牌.?
在重读了上面的内容后,我意识到我的意思还不太清楚.
我看到的文章给了客户机一个预先加密的令牌,该令牌是用公钥加密的。然后,他们在收到请求时解密此令牌,并根据存储的未加密令牌对其进行检查。在我看来,这似乎没有好处,只给客户端一个未加密的令牌,并节省整个解密开销.
发布于 2016-05-06 11:08:29
我认为这是一个宽泛的问题,答案将取决于你的要求。但是,在大多数情况下,您将不需要密码在您的身份令牌。
标识令牌(用于执行身份验证)可以是不透明的(除了该值本身以外不显示其他细节的令牌,如随机字符串),也可以是自包含的(如JSON令牌)。
有关更多细节,请参见下文:
随机串
令牌可以通过生成随机字符串并将其持久化到具有过期日期和与其关联的用户标识符的数据库来发出。
JSON Web令牌(JWT)
由RFC 7519定义,它是一种标准方法,用于安全地表示双方之间的索赔。JWT是一个自包含的令牌,允许您在有效负载中存储用户标识符、过期日期和任何您想要的内容(但不要存储密码),这是一个编码为Base64的JSON。有效载荷可以由客户端解码和读取。
使用JWT,您可以执行无状态身份验证,也就是说,如果不需要跟踪JWT令牌,就不需要持久化JWT令牌。只要在服务器端验证令牌的签名,就可以检查令牌的完整性。
虽然,通过持久化令牌,您将有可能使其无效并撤销对它们的访问。为了保持JWT令牌的跟踪,您可以保留令牌标识符( jti声明)和一些元数据(您为其发出令牌、到期日期等),而不是持久化整个令牌。要找到一些使用JWT的很好的资源,请看一下http://jwt.io。
对于具有加密的令牌,请查看在RFC 7516中定义的JSON加密(JWE)。当您需要保密时使用JWE,因此客户端将需要一个密钥来解密令牌的内容。
https://stackoverflow.com/questions/37067329
复制相似问题