如何使用OIDC请求刷新令牌

时间:2020-02-18 19:56:27

标签: authentication oauth-2.0 openid-connect refresh-token

我正在尝试使用OIDC和OAuth2实现刷新令牌,但是在理解工作流程时遇到了麻烦。据我了解,使用授权代码流,从/token端点获得响应的刷新令牌是offline_access请求中存在/authorize范围。

我的问题是,如果offline_access范围仅发送到/authorize端点,或者发送给令牌端点的请求如何知道应该为该用户登录返回刷新令牌?范围也出现在令牌请求中?还是在返回代码之前在/authorize工作流程中生成并存储刷新令牌的情况,然后在/token工作流程中查找并返回刷新令牌?

具体遵循以下工作流程:

enter image description here

1 个答案:

答案 0 :(得分:1)

范围是在授权请求期间发送的,并且从授权服务器的角度来看,将执行以下操作:

  • 代码返回给调用者
  • 代码被缓存的时间很短(例如1分钟)
  • 范围已缓存
  • 在某些流程中,
  • 还缓存了其他详细信息,例如PKCE验证程序

接下来,客户端发出“授权代码授予”请求以将代码交换为令牌,然后授权服务器执行以下操作:

  • 查找代码
  • 应用PKCE验证检查
  • 检查重定向URI是否与原始请求的重定向
  • 查找缓存的作用域
  • 从OAuth客户端配置中查找详细信息,例如刷新令牌生存期
  • 根据上述数据生成令牌
  • 删除缓存条目,以使相同的代码无法再次处理
  • 将令牌返回给调用者

如上所述,作为应用程序开发人员,了解AS行为的关键点很有用,尽管我希望我遗漏一两个要点。我的主要重点是将流程集成到UI和API中。

当然,对于授权服务器,我们应该始终使用经过认证的第三方实现,例如低成本云或免费开源解决方案。

相关问题