OAuth 2.0协议草案的4.2节指出授权服务器可以返回a access_token(用于向资源验证自己)以及a refresh_token,它纯粹用于创建新的access_token:
https://tools.ietf.org/html/rfc6749#section-4.2
为什么两者都有?为什么不只是做到access_token最后只要refresh_token没有refresh_token?
我想对我们的新REST API实现基于JWT的身份验证.但是由于在令牌中设置了到期,是否可以自动延长它?如果他们在那段时间内积极使用该应用程序,我不希望用户在每X分钟后需要登录.这将是一个巨大的用户体验失败.
但是延长过期会创建一个新令牌(旧令牌在到期之前仍然有效).每次请求后生成一个新令牌听起来很愚蠢.当多个令牌同时有效时,听起来像是一个安全问题.当然,我可以使用黑名单使旧的旧的无效,但我需要存储令牌.JWT的一个好处就是没有存储空间.
我发现Auth0是如何解决它的.它们不仅使用JWT令牌,还使用刷新令牌:https: //docs.auth0.com/refresh-token
但同样,要实现这一点(没有Auth0),我需要存储刷新令牌并保持其过期.那么真正的好处是什么?为什么不只有一个令牌(不是JWT)并在服务器上保持过期?
还有其他选择吗?使用JWT不适合这种情况吗?
我有一个使用 React hooks、SQL Server 数据库和 .NET Core 3.1 Web API 构建的应用程序。我真的很难理解所有活动部件之间的关系。我想避免重新发明轮子并利用现有的库和框架。根据我所学到的知识,JWT 似乎是通往这里的方法,但它只是有点令人困惑。这是我的要求:
我认为我在所有的解耦中迷失了(这通常是一件好事!)我看到有关带有虚拟后端的 React 的文章,然后我迷失了。我看到有关 .NET Core 的帖子,但不知道如何将它与 React 一起使用。从概念上讲,大部分内容都是有意义的,但我还没有找到一个地方可以帮助我从头到尾理解代码应该是什么样子。
这是我的问题!
有很多事情需要整理,我只是希望有人能帮助我简化。