如何在 UserService 中实现 ITokenHandle 接口来撤销引用令牌

How to implement ITokenHandle interface in UserService to revoke a reference token

我有一个基于 Identity Server 3 的身份验证服务。它目前正在使用 JWT,但我计划切换到引用令牌,以便我们可以在用户注销客户端应用程序时撤销它们。我一直在研究这个 (Dominick Baier - Reference Tokens and Introspection) 并了解一个选项——我想实现的那个——是让我的用户服务——我的身份验证服务实现的一部分——使用 Identity Server ITokenHandle 接口来撤销令牌。我无法找到有关此接口或如何在我的用户服务中实现它的更多信息。

有没有人在他们的用户服务中完成了 Identity Server 3 令牌撤销,或者谁能告诉我关于这种方法的更多信息?

原文post评论中的两个GitHubposting包含了我需要的信息。我能够从 JWT 切换到引用令牌,然后在用户注销时自动撤销引用令牌。令牌类型的切换是一个简单的设置

AccessTokenType = AccessTokenType.Reference

在我的客户端设置代码中。要在注销时撤销令牌,我首先添加了

idSrvFactory.Register(new Registration<DefaultClientPermissionsService>());

在 Startup.cs 中。然后在我的 UserService 中,我将它添加到 UserService 构造函数

public UserService(DefaultClientPermissionsService clientPermissionsSvc)
{
    _clientPermissionsSvc = clientPermissionsSvc;
}

最后,仍然在我的 UserService 中,我实现了

public override Task SignOutAsync(SignOutContext context)
{
    string subjectId = GetSubjectId(context);
    _clientPermissionsSvc.RevokeClientPermissionsAsync(subjectId, context.ClientId);
    return Task.FromResult(0);
}