如何在 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);
}
我有一个基于 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);
}