使代码中的参考令牌无效(不是对撤销端点的http调用)

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

我将参考令牌保留到数据库,我的用户可以更改或获取生成的密码。但是,例如,如果某个用户忘记了密码并获得了一个新生成的密码,那么我想使该主题的所有当前令牌失效/删除。通过efcore直接与db交互是一个好主意/可以接受的,或者除了/connect/revocation端点之外是否还为此使用了api?

identityserver4
1个回答
0
投票

与数据库进行交互没有问题,但是可以使用现有的服务来做到这一点。

在IdentityService中,您可以在IdentityServer4.Stores名称空间中找到商店

using IdentityServer4.Stores;

将商店注入控制器中:

private readonly IReferenceTokenStore _referenceTokenStore;

public class MyController : Controller
{
    public MyController(IReferenceTokenStore referenceTokenStore)
    {
        _referenceTokenStore = referenceTokenStore;
    }
}

并调用它以删除此用户/客户端组合的参考令牌:

await _referenceTokenStore.RemoveReferenceTokensAsync(subjectId, clientId);

这将有效地从数据库中删除记录。您不应该创建自己的数据库模型并直接删除令牌。

由于IdentityServer是开源的,因此您可以获取用于令牌吊销的look at the code

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