4

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

4

1 回答 1

5

但是它们存储在哪里?

默认情况下,它们不存储在任何地方:它们是独立的。只要用于保护刷新令牌的加密密钥仍在 ASP.NET 数据保护密钥环中,它们就可以被 ASOS 解密并用于颁发新的访问令牌。


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

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

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


...还是删除它?

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

为此,如果您认为 a已被撤销并且不能用于发行新令牌,则可以覆盖HandleTokenRequest事件并调用。context.Reject()refresh_token


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

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

于 2016-03-02T12:56:35.297 回答