我有AuthenticationTokenProvider
抽象的自定义实现,它有两个方法需要重写:一米一米一,一米二米一。
在OAuthAuthorizationServerOptions
中,我将RefreshTokenProvider
设置为我的自定义AuthenticationTokenProvider
实现。
我的访问令牌将在20分钟后过期。我的刷新令牌将在24小时后过期。当访问令牌过期时,会出现包含刷新令牌的grant_type=refresh_token
请求。我观察到ReceiveAsync
被调用。存在设置AuthenticationTokenReceiveContext
的Ticket
属性的逻辑。但之后CreateAsync
方法被调用,其中AuthenticationTokenCreateContext
中有一个设置token的逻辑,AuthenticationTokenCreateContext
的Ticket
属性好像不是我之前在ReceiveAsync
方法中设置的。
结果我收到了带有新的访问令牌和刷新令牌的响应。我不希望每次我想交换我的访问令牌时都重新颁发刷新令牌,我已经有一个24小时有效的令牌。
2条答案
按热度按时间uoifb46i1#
最终我找到了如何回答我的问题。我可以利用
OwinContext.Environment
来存储一个标志,该标志告诉我的刷新令牌尚未过期,因此不需要创建新的令牌。new9mtju2#
我更喜欢让坏角色获得刷新令牌并能够交换访问令牌的窗口更小。此外,如果还交换了刷新令牌,则以前的刷新令牌无效。如果使用了以前的刷新令牌,则包括访问令牌在内的所有关联令牌都无效。