oauth-2.0 – 覆盖AccessTokenExpireTimeSpan

前端之家收集整理的这篇文章主要介绍了oauth-2.0 – 覆盖AccessTokenExpireTimeSpan前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以覆盖自定义OAuthAuthorizationServerProvider上特定票证的默认AccessTokenExpireTimeSpan?所有其他票证的默认到期时间为15分钟.
public public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    ...
    var ticket = new AuthenticationTicket(identity,properties);

    if (condition)
    {
        ticket.Properties.IssuedUtc = DateTime.UtcNow;
        ticket.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(14);
    }

    context.Validated(ticket);
}

条件== true的生成令牌具有默认的到期时间(15分钟).我不想更改context.Options.AccessTokenExpireTimeSpan,因为它会影响所有令牌,这不是主意.

解决方法

您必须在TokenEndPoint方法中设置到期时间而不是GrantResourceOwnerCredentials方法
public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
    ...

    if (condition)
    {
        context.Properties.ExpiresUtc = DateTime.UtcNow.AddDays(14);
    }

    ...
}

我希望它有所帮助.

编辑

正如Michael在其response中针对类似问题所指出的,如果每个client_id都有不同的AccessTokenExpireTimeSpan,则可以在验证客户端身份验证时使用客户端覆盖上下文选项中的默认配置的AccessTokenExpireTimeSpan:

public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
    ...

    context.Options.AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(client.AccessTokenExpireTime);

    ...
}
原文链接:https://www.f2er.com/aspnet/250965.html

猜你在找的asp.Net相关文章