撤销 IdentityServer4 中特定会话的访问令牌(参考)

问题描述 投票:0回答:1

我正在使用带有参考标记的

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
访问(引用)令牌的最佳解决方案是什么?

提前致谢...

c# asp.net identityserver4
1个回答
0
投票

您找到解决问题的方法了吗? 我也遇到类似的问题。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.