【发布时间】:2018-09-29 08:51:19
【问题描述】:
我正在构建一个使用 JWT 进行身份验证的应用程序。我开始做一些研究,我对刷新令牌和令牌存储等主题缺乏共识感到惊讶。
据我所知,JWT 和 OAuth 是两种不同的协议,它们遵循 不同的规格。
OAuth 使用刷新令牌来获取新的访问令牌,但为此,流程中涉及 4 个实体,用户(前端)、资源服务器(Facebook、Google 等) )、客户端服务器(例如 PHP Web 应用程序)和授权服务器。
在这种情况下,有一个刷新令牌是有意义的,因为为了刷新令牌,它需要一个客户端 ID 和一个只有客户端服务器知道的客户端密码(由资源/验证服务器发布)而不是由用户(用户前端)。因此,对于窃取刷新令牌的攻击者来说,刷新令牌将毫无用处。
但我的问题是,对于一个没有针对第三方资源服务器(如谷歌、Facebook 等)进行身份验证的应用程序,拥有刷新令牌真的有用吗,为什么不让 JWT 令牌持久为只要一个刷新令牌。
另一方面,我可以看到,当刷新令牌与 This Article 状态的 JWT 令牌一起使用时,刷新令牌通常受到严格的存储要求,以确保它们不会泄露。但是,我找不到在用户端存储此令牌的内容/位置和方式,以满足这些严格的存储要求。
有人能告诉我这一切吗?谢谢。
注意:我想强调我的网络应用程序没有使用第三方应用程序进行身份验证(Facebook、Google 等),它是前端的单页应用程序和服务器端的单个 API,它发出一个智威汤逊令牌。我的问题集中在这种架构上
【问题讨论】:
标签: security authentication oauth-2.0 jwt refresh-token