IdentityServer4在PersistedGrantStore中查找应用于当前刷新令牌的授权



我们有一个使用IdentityServer4进行身份验证的web api。其中一个要求是向用户发回"活动会话"列表。我们正在使用基于EntityFramework的自定义IPersistedGrantStore将授予存储在SQL中。

是否有任何方法可以从web请求中获取信息(当请求到达API时,我可以看到完整的承载令牌),并在数据库中找到适用于它的授权?

行中的"key"不是令牌本身。我不会每次刷新令牌时都更改它们。是否有一些方法可以散列令牌并将其与现有密钥进行比较,以表示"这是您当前的会话?">

想法是我可以"注销所有会话(除了这一次)">

我目前的最佳猜测是根据用户id、客户端id和创建时间查找行。但如果可能的话,我希望能够用钥匙拿到它。

我们最终为cookie中间件创建了一个自定义的ITicketStore(通过SessionStore配置属性),以在PersistedGrants表中存储cookie值(以及与之相关的SubjectId)。我们使用AuthenticationTicket中的session_id属性(它是最终在会话ID cookie和令牌中作为sid声明的值)作为密钥和auth_ticket的类型。

一旦你有了这一点,删除(从而结束)与用户相关的任何身份验证会话并根据你的意愿排除当前会话是很简单的。

最新更新