Security OAuth2-刷新令牌不必要的复杂性

Security OAuth2-刷新令牌不必要的复杂性,security,oauth,oauth-2.0,Security,Oauth,Oauth 2.0,我不清楚,如果端点是中多次描述的相同(授权)服务器,为什么oauth2中会有刷新/访问令牌概念 当资源所有者授权任何第三方组件而不共享凭据时,第一个授权步骤是oauth2的基本思想。使用授权令牌生成访问和刷新令牌只是间接授权imho的另一个级别,但不会增加安全性 由于授权服务器是相同的,访问令牌与授权令牌和刷新令牌一样敏感,因此我将其称为不必要的复杂性 对我来说唯一有意义的解释是,如果有人偷了访问令牌,客户端可以请求一个新的访问令牌。但是有人是怎么把它磨成钢的呢?如果它是中间人,则当客户端请求新

我不清楚,如果端点是中多次描述的相同(授权)服务器,为什么oauth2中会有刷新/访问令牌概念

当资源所有者授权任何第三方组件而不共享凭据时,第一个授权步骤是oauth2的基本思想。使用授权令牌生成访问和刷新令牌只是间接授权imho的另一个级别,但不会增加安全性

由于授权服务器是相同的,访问令牌与授权令牌和刷新令牌一样敏感,因此我将其称为不必要的复杂性

对我来说唯一有意义的解释是,如果有人偷了访问令牌,客户端可以请求一个新的访问令牌。但是有人是怎么把它磨成钢的呢?如果它是中间人,则当客户端请求新的令牌时,他也具有刷新令牌。 我的问题是:为什么授权服务器不只是返回一个可以被客户端和资源所有者撤销的访问令牌?刷新/访问令牌策略的好处是什么


感谢您的解释。

刷新令牌试图解决服务器负载的细粒度访问检查。当资源所有者在两次调用之间缓存访问令牌,以便在不访问授权服务器的情况下授权后续调用时,会降低服务器负载。这大大减少了authz服务器上的负载。但这带来了一个问题,即在缓存访问令牌时,资源所有者从未看到令牌权限的更改,特别是令牌可用于哪些目的的减少

现在,一个行为良好的资源所有者应该知道,在与授权服务器重新确认令牌之前,它应该只缓存令牌一小段时间。但你不能指望资源所有者表现良好。因此,授权服务器将访问令牌的过期时间相对较短。这将强制客户端使用刷新令牌来获取新的访问令牌。然后,资源所有者将验证新的访问令牌,并获取令牌的当前权限

需要注意的是,刷新访问令牌时不需要用户交互。如果重新验证对于用户交互模型来说不是问题,则不需要刷新令牌,用户只需重新验证即可。但那会有点糟糕


这意味着,如果用户要从其OAuth帐户中删除权限,则资源所有者将继续使用旧权限集工作,直到访问令牌过期。然后将获得新的访问令牌,新的权限集将生效

除了尼尔的回答:如果只有一个代币,你认为撤销该代币会怎样?这必然涉及到资源服务器(RS)咨询授权服务器(AS),这是一个巨大的开销。这正是拆分存在的原因:短期访问令牌可以独立于AS的检查而存在。长寿命的刷新令牌将访问权限与AS协调。

好的,我太注重安全性了。总之,如果我理解正确的话,这只是为了实现缓存和更新权限的想法。谢谢你,这个令牌仍然没有意义,很容易被拦截/劫持,然后砰的一声。。。获取尽可能多的访问令牌。@Konrad-如果不使用传输层安全性(例如:SSL/TLS),所有安全性都会失败。刷新令牌旨在强制您与服务器重新验证用户仍然具有相同的权限。这与网络安全无关。一般来说,所有现代授权平台都假定传输层安全性是给定的,而不是试图解决它。是的。。。也许这是唯一的好理由。不要再次登录,而是使用类似“凭证”的刷新令牌,并在引擎盖下刷新令牌。不要求用户再次登录。在我看来,它仍然带来了很多复杂性。标准没有很好的定义,很难理解。这也是一个很好的观点。我没有读到,授权码是一次性使用的,应该有效10分钟左右。