具有自定义生存期的Identity Server 4访问令牌

认识论者

我有一种情况,我必须将自定义访问令牌返回给尚未验证其电子邮件的用户。无论为客户端指定的访问令牌生存期如何,访问令牌都必须在24小时后过期。

有没有一种方法可以指定每个任务的访问令牌的生存期。我已经实现了“ IResourceOwnerPasswordValidator ”接口。

我遇到的一个选择是使用身份服务器工具“ IdentityServerTools”来生成令牌,但不知道如何使用刷新令牌返回正确的令牌响应(仍需要生成)。

var token = await _identityServerTools.IssueClientJwtAsync(
                clientId: context.Request.Client.ClientId,
                lifetime: 86400, // 24 hours in seconds
                scopes: context.Request.Scopes
            );
酷卡格琳

以下代码未经测试,但可以解决:

internal class YourCustomTokenRequestValidator : ICustomTokenRequestValidator
{
    // your email checker which takes an `IClaimsPrincipal` parameter
    private readonly IEmailChecker emailChecker;
    public YourCustomTokenRequestValidator(IEmailChecker emailChecker)
    {
        this.emailChecker = emailChecker;
    }
    public Task ValidateAsync(CustomTokenRequestValidationContext context)
    {
        var request = context.Result.ValidatedRequest;
        var isVerified = false;
        var subject = request.Subject ?? request.AuthorizationCode?.Subject;
        if(subject != null)
        {
           isVerified = emailChecker.IsVerified(subject);
           if (!isVerified)
           {
              request.AccessTokenLifetime = 24 * 60 * 60;
           }
        } 

        return Task.CompletedTask;
    }
}

注册自定义实现:

services.AddIdentityServer()
           .AddCustomTokenRequestValidator<YourCustomTokenRequestValidator>()
            /// ;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Identity Server 4-设置访问令牌生存期

Identity Server 4从Db撤消访问令牌

Identity Server 4:添加声明以访问令牌

如何在 Identity Server 4 中记录生成的访问令牌?

刷新令牌的生存期短于访问令牌

在有限的生存期内使用Passport发行访问令牌

使用Identity Server 4刷新同时包含视图和资源的MVC Core应用程序中的访问令牌的最佳实践

Identity Server 4 Angular 2令牌到期

用于令牌服务器上的自定义终结点的Identity Server 4客户端凭据

.Net Core自定义身份验证,使用带有Identity Server 4的API密钥

Identity Server 4中的自定义登录视图

有没有办法撤销另一个用户的访问令牌并结束他们在Identity Server 4中的会话?

如何控制自定义IResourceProvider的生存期?

尝试从Adal4j中的刷新令牌访问访问令牌时,如何定义AuthenticationCallback?

如何使用 Microsoft Graph API 为应用设置访问令牌生存期

Identity Server 4向生成的令牌添加声明

Identity Server 4:支持密码授予类型的刷新令牌

Identity Server 4参考令牌和安全性

Identity Server 4刷新令牌过期不起作用

在Identity Server 4中设置令牌验证期限

如何添加自定义声明以访问IdentityServer4中的令牌?

Identity Server 4:如何仅为UserInfoEndpoint添加自定义声明,并将其排除在AccessToken中?

将自定义参数传递给登录页面 Identity Server 4 中使用的 returnUrl

无法限制.NET Core中JWT令牌的生存期

Azure Active Directory 中的可配置令牌生存期

如何从Identity Server击中令牌端点获取访问令牌,如何使用访存从React客户端传递凭据?

Identity Server 3访问令牌验证端点失败,受众验证失败

Identity Server:在客户端上的ExternalLoginCallback的AuthorizationProeperties中设置的访问令牌/项目

具有EF Identity DB的Identity Server 4问题