如何在UserService中实现ITokenHandle接口以撤消引用令牌

时间:2018-11-08 15:19:17

标签: access-token logout identityserver3

我有一个基于Identity Server 3的身份验证服务。它当前正在使用JWT,但是我打算切换到参考令牌,以便我们可以在用户注销客户端应用程序时撤消它们。我一直在研究此(Dominick Baier - Reference Tokens and Introspection),并且了解一种选择-我想实现的一种-是拥有用户服务-我的身份验证服务实现的一部分-使用Identity Server ITokenHandle接口撤消令牌。我无法在此接口上找到任何更多信息,或者如何在我的用户服务中实现它。

是否有人在其用户服务中完成了Identity Server 3令牌吊销,或者有人可以向我指出有关此方法的更多信息?

1 个答案:

答案 0 :(得分:0)

原始帖子的注释中的两个GitHub帖子包含我需要的信息。我能够从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);
}