繁体   English   中英

基于REST API JWT令牌的身份验证安全性 拉拉韦尔/丁戈/ jwt

[英]Rest API JWT token based authentication security | laravel/dingo/jwt

我正在使用基于JWT令牌的身份验证来验证暴露给移动应用程序的REST API。 我有一个登录API,用户将在其中登录并获得JWT作为响应。 应用程序必须对其余请求使用JWT令牌。 在开发过程中遇到的一个问题是。

一旦我向用户提供了身份验证令牌,他就可以访问其余API集。

在我当前的设计中,具有JWT令牌T1的用户1试图访问用户2的资源是可能的,这是我系统中的缺陷。 对于每个请求,我都必须检查令牌中的用户ID与请求该过程的用户ID是否匹配,然后继续吗? 还是有其他更好的方法来处理呢?

我正在使用带有dingo rest和JWT lib的laravel框架。

更新资料

例如:

我个人是从应用程序获得端点的。 我登录并收到了我的jwt令牌,该令牌将在其余资源中有效。 现在要获取使用其他用户ID添加的产品列表,我可以这样

标头中的我的JWT令牌

GET /products/3  and 3 is not my user id!

在这种情况下,我只是验证了一个jwt令牌,它将对其进行验证并使用非MINE的资源进行响应!

TL; DR :以这种方式使用它是很常见的,您应该保持现状!

详细信息 :这里的要点是令牌是“足够模糊的”,因此,非授权用户从授权用户获取令牌的机会微不足道。 在您的示例中,这意味着用户2可以以很高的概率不猜测用户1正在使用的令牌。

当然,这种方式可能适合中间人攻击,因此您应确保仅通过安全连接传输令牌。 我建议“仅HTTPS”。 另外,您可能会考虑仅在标头中发送和接收令牌,因此它们不会在任何内容视图中公开。

作为更多背景知识 :考虑一下PHP“标准”会话cookie的工作方式:用户(客户端)在cookie中获取会话ID并将其发送回去。 这基本上与您在JWT上所做的相同,因为用户2也可能以某种方式从此处的用户1窃取cookie,并代表他行事。 JWT甚至为您添加了一个级别,您可以在该级别上轻松确认您是否实际发行了令牌(前提是您使用的是RSA密钥对样式方法),我认为这比PHP会话ID Cookie方法更具有优势。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM