我不明白为什么要在注销时撤销Access Token。我的意思是,当您浏览到应用程序时,有一个Refresh令牌用于获取新的访问令牌时,您应该从安全角度获得什么?当有一个刷新令牌可以由任何使用计算机并浏览到应用程序的人使用时,我看不到从安全角度的好处。
虽然OAuth 2.0的概念是基于未被吊销的短期访问令牌,但该规则也有例外,并且有一个针对令牌吊销的协议规范,即RFC 7009 OAuth 2.0Token revocationhttps://datatracker.ietf.org/doc/html/rfc7009.
在撤销访问令牌时,还应确保同时撤销刷新令牌(规范规定撤销刷新令牌也将撤销关联的访问令牌(。当代币使用寿命长,并且怀疑存在某些漏洞、未经授权的第三方代币访问或其他代币泄漏时,这一点变得更加重要。
我不明白为什么要在注销时撤销Access Token。
无法吊销访问令牌。它们用于授权,并授予访问令牌的承载对数据的访问权限,只要令牌尚未过期。
注销是身份验证这是两个非常不同的概念。
我的意思是,从安全角度来看,您应该获得什么,而有一个刷新令牌,用于在您浏览到应用程序时立即获得新的访问令牌?
您再次将授权(OAuth 2.0访问令牌刷新令牌(与身份验证(打开id连接,登录用户(混合在一起。
使用OAuth 2.0,应用程序被授予访问用户数据的授权——他们被授予访问令牌和刷新令牌。应用程序可以在用户不在场的情况下随时访问用户数据。
如果有一个刷新令牌,无论谁使用计算机并浏览到应用程序,我都看不到从安全角度的好处。
这正是OAuth 2.0的要点,它用于在用户不在场时授予应用程序对用户数据的访问权限。这不是身份验证。
当用户从基于OAuth2的会话注销时,他们可能希望确保同一台机器上的每个应用程序都不能再代表用户做事情。
例如,您的组织可能有一个跨多个应用程序(有些甚至是第三方(的单一登录系统。当用户注销时,您不能依赖应用程序来"注销自己"。也许他们得到的只是一个会话cookie,放在浏览器的cookie罐中等待下一个请求。
如果我在一台机器上注销,我希望得到保证,任何东西都不能代表我行事,甚至一分钟都不能。