我正在使用IdentityServer 4
隐式流程来引用令牌。
我自己实现了IPersistedGrantStore,它在MSSQL数据库中存储了授权,工作正常。
现在我想从前端撤消用户注销的引用令牌。因为我不想从前端调用撤销端点我想在IdentityServer中的AccountController.Logout(string logoutId)
方法中隐式地执行它(这也包括从swagger ui注销)。
所以我在AccountController中注入IIdentityServerInteractionService,但是当我调用
时await _interaction.RevokeTokensForCurrentSessionAsync();
在LogOut-Method
中撤销当前subjectid / user和clientid的所有令牌(调用方法IPersistedGrantStore.RemoveAllAsync(string subjectId, string clientId)
)。
但是我想撤销已注销的一个特定会话的令牌(该方法称为RevokeTokens ForCurrentSession
Async)。
另一种方法是调用TokenRevocationClient.RevokeAsync
,我需要准确的令牌才能通过。但在AccountController.LogOut
我
只有logoutid和LogoutRequest(也不包含实际令牌)。
那么在用户注销时隐式撤销specific
访问(引用)令牌的最佳解决方案是什么?
提前致谢...