AspNet.Security.OpenIdConnect.Server。刷新令牌

时间:2016-03-02 07:46:12

标签: c# oauth-2.0 asp.net-core owin aspnet-contrib

据我所知,ASOS支持开箱即用的刷新令牌。要获取刷新令牌,我需要将offline_access范围添加到我的令牌请求中。但他们在哪里储存?如何更改令牌的到期日期或将其删除?如何确定创建哪个用户刷新令牌?

1 个答案:

答案 0 :(得分:4)

  

但它们存放在哪里?

默认情况下,它们无处存储:它们是自包含的。只要用于保护刷新令牌的加密密钥仍在ASP.NET数据保护密钥环中,它们就可以被ASOS解密并用于发布新的访问令牌。

  

如何更改令牌的到期日期?

可以使用RefreshTokenLifetime属性从选项中全局设置默认的到期日期。如果您不提供自己的生命,则有效期为14天。

请注意,默认情况下也会启用滑动过期,这意味着每次发出新的grant_type=refresh_token请求时,您都会获得一个新的刷新令牌(有效期为14天)。您可以将UseSlidingExpiration设置为false

,以停止滑动过期
  

...还是删除它?

由于刷新令牌是自包含的,因此您无法删除它们。您当然可以考虑通过覆盖SerializeRefreshTokenDeserializeRefreshToken事件来使用自定义令牌(如对应于数据库中条目的唯一字符串),但建议的方法是在接收时将它们视为无效。刷新令牌请求。

为此,如果您认为HandleTokenRequest被撤销且无法用于发放新令牌,则可以覆盖context.Reject()事件并致电refresh_token

  

如何确定创建了哪个用户刷新令牌?

刷新令牌包含您在创建原始身份验证票证时添加的所有声明,因此,如果您添加与用户标识符相对应的sub声明,则可以使用它来检索用户数据库中的个人资料。