我真的想了解OpenID和OAuth之间的区别吗?也许他们是两个完全不同的东西?
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不适合这种情况吗?