首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于Django Rest,应该使用什么来进行身份验证?

对于Django Rest,应该使用什么来进行身份验证?
EN

Security用户
提问于 2018-04-29 15:16:44
回答 2查看 5.2K关注 0票数 6

我刚刚读到了关于为什么JWT很糟糕的文章。我现在不确定我应该使用什么来进行身份验证。

上下文:我编写的API主要用于移动应用程序(iOS和Android)。在未来,它也将被访问通过一个反应前端。

在过去,我只是在令牌身份验证中使用DRF的构建。然后,手机只需将此令牌存储在相应的应用程序中。

现在,我被告知,这是不安全的,我应该使用JWT。在研究JWT的时候,我发现了上面的文章,其中详细阐述了为什么JWT的suck和基本会话身份验证更好。但据我所知,当作为API使用时,我不能使用DRF进行会话身份验证,是吗?

所以我的问题是?我应该使用哪些DRF工具来进行身份验证,这样它才是安全的?

EN

回答 2

Security用户

回答已采纳

发布于 2018-04-30 21:32:29

我是这篇文章的作者,也是我给出的关于为什么JWT糟糕且愚蠢的技术演讲( @joepie91 91已经雄辩地写了比我以往任何时候都更好的文章:http://cryto.net/~joepie91/blog/2016/06/13/stop-using-jwt-for-sessions/)。

考虑到您的应用程序需求(移动应用程序+只与后端API对话的JS前端应用程序),我建议您使用OpenID连接授权代码流(对于您的移动应用程序使用w/ PKCE )。

具体来说,对于您的移动应用程序,我建议使用非常棒的AppAuth库:https://appauth.io/ (它为iOS +Android都提供了很好的库)。

现在,你可能想知道为什么我会建议使用OpenID连接(也就是JWT)来做一些事情,当我如此公开地召集人们反对使用JWT的时候:我会告诉你--对于大多数事情来说,这并不重要。

事情是这样的:是的,在构建安全的应用程序时,JWT的使用非常糟糕。它们很复杂,大多数库目前还没有完整的规范,使用JWT加密等更高级的特性几乎肯定会给您带来严重的麻烦和服务之间的兼容性问题。

此外,JWT之所以变得流行于身份验证,是因为它们经常用于缓存身份验证和授权数据--在安全世界中,整个实践是一个大不可以的。

缓存敏感数据(如身份验证和授权数据)是您为安全所能做的最糟糕的事情:您信任过时的信息。目前建立在JWTs之上的所有auth系统都受到这种天真的影响。

一旦您尝试通过使用JWT来“加快”您的站点/API的速度,您就已经犯了安全错误,现在正处于危险之中。

此外,一旦人们开始使用JWT并意识到他们处于危险之中,他们就会尝试重新集中所有东西(正如另一位评论者所建议的),并开始使用吊销列表,以便在发生坏事时可以撤销令牌。这导致了与传统会话管理相同的速度惩罚,但由于JWT比会话cookie“重”,而且更脆弱,速度惩罚更大。

对不起,我的建议是:

  • 如果你想要真正的安全,你必须使用服务器端会话。在您的示例中,这将需要支持来自API后端的会话cookie,以便当您的react对您的API进行身份验证时,该API设置一个安全cookie,每当它与API服务进行身份验证时,该应用程序将自动使用该cookie。您还需要从您的移动应用程序中使用基于cookie的API (我不熟悉构建本地移动应用程序,因此不能对此组件发表评论)。
  • 如果你想要简单、安全程度和其他主要的web应用一样,可以使用OIDC和开箱即用的开源解决方案。这是目前最简单的方法,虽然它并不完美,但如果它解决了您的问题,那么它可能不是什么大问题。

如果您正在构建敏感内容,请尽可能使用服务器端会话cookie。否则呢?不要为细节操心,要随心所欲。

票数 6
EN

Security用户

发布于 2018-04-29 19:37:59

海事组织,你有两个很好的选择:

  1. 使用随机字符串,该字符串将对应于存储在数据库中的会话。如果可能的话,这是最好的选择。虽然这些会议不应该是长期的。如果需要长期登录,可以使用JWT令牌进行重新身份验证。
  2. 使用用对称密钥(HMAC)签名的JWT。这是更快,但仍然安全。然而,这个选项对带宽的要求仍然要高得多,而且通常比随机字符串慢得多。
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/184855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档