据我所知,ASOS 支持开箱即用的刷新令牌。要获得刷新令牌,我需要为offline_access
我的令牌请求添加范围。但是它们存储在哪里?如何更改令牌的到期日期或将其删除?如何确定为哪个用户创建刷新令牌?
1 回答
但是它们存储在哪里?
默认情况下,它们不存储在任何地方:它们是独立的。只要用于保护刷新令牌的加密密钥仍在 ASP.NET 数据保护密钥环中,它们就可以被 ASOS 解密并用于颁发新的访问令牌。
如何更改令牌的到期日期?
可以使用RefreshTokenLifetime
属性从选项全局设置默认到期日期。如果您不提供自己的寿命,则它们的有效期为 14 天。
请注意,默认情况下还启用了滑动到期,这意味着您每次发出新grant_type=refresh_token
请求时都会获得一个新的刷新令牌(有效期为 14 天)。UseSlidingExpiration
您可以通过设置为禁用滑动到期false
。
...还是删除它?
由于刷新令牌是独立的,因此您无法删除它们。您当然可以考虑通过覆盖SerializeRefreshToken
和DeserializeRefreshToken
事件来使用自定义令牌(例如与数据库中的条目相对应的唯一字符串),但推荐的方法是在接收刷新令牌请求时简单地将它们视为无效。
为此,如果您认为 a已被撤销并且不能用于发行新令牌,则可以覆盖HandleTokenRequest
事件并调用。context.Reject()
refresh_token
如何确定为哪个用户创建刷新令牌?
刷新令牌包含您在创建原始身份验证票证时添加的所有声明,因此如果您添加sub
与用户标识符对应的声明,您可以使用它从数据库中检索用户配置文件。