我正在使用带有参考标记的
IdentityServer 4
隐式流程。
我自己实现了 IPersistedGrantStore,它将授权存储在 MSSQL 数据库中,效果很好。
现在我想撤销用户从前端注销时的引用令牌。因为我不想从前端调用撤销端点,所以我想在 IdentityServer 中的
AccountController.Logout(string logoutId)
方法中隐式地调用它(这也涵盖了从 swagger ui 注销)。
所以我将 IIdentityServerInteractionService 注入到 AccountController 中,但是当我调用
时await _interaction.RevokeTokensForCurrentSessionAsync();
在
LogOut-Method
中,它撤销当前 subjectid/用户和 clientid 的所有令牌(调用方法 IPersistedGrantStore.RemoveAllAsync(string subjectId, string clientId)
)。
但我只想撤销已注销的一个特定会话的令牌(该方法毕竟称为 RevokeTokens
ForCurrentSession
Async)。
另一种方法是调用
TokenRevocationClient.RevokeAsync
,我需要传递确切的令牌。但在 AccountController.LogOut
我
只有 logoutid 和 LogoutRequest (也不包含实际的令牌)。
那么在用户注销时隐式撤销
specific
访问(引用)令牌的最佳解决方案是什么?
提前致谢...
您找到解决问题的方法了吗? 我也遇到类似的问题。
谢谢