oauth-2.0 - 覆盖AccessTokenExpireTimeSpan

标签 oauth-2.0 asp.net-web-api2

是否可以覆盖自定义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的 token 具有默认的到期时间(15分钟)。我不想更改context.Options.AccessTokenExpireTimeSpan,因为它会影响所有 token ,而这不是主意。

最佳答案

您必须在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);

    ...
}

关于oauth-2.0 - 覆盖AccessTokenExpireTimeSpan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32120754/

相关文章:

Youtube Data API v3 oAuth2 无法更改权限

java - Spring Boot + Oauth2 客户端凭据

javascript - 在 Google Contacts API 版本 3.0 上使用 oauth2 检索刷新 token

c# - 使用 FromUri 绑定(bind)没有参数名称前缀的对象

spring-security - 在 Spring Resource Server 中采用来自 JWT 的权限

ruby-on-rails - 看门人限制适用范围

c# - Web api中的重复键问题

c# - “参数字典包含空条目”错误,Web API

asp.net-mvc - 尝试读取 Web API 调用的响应

c# - 多个 REST API 方法可以共享同一个 Controller 类吗?