Override AccessTokenExpireTimeSpan

This works in the context (ha ha) you have:

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
     context.Options.AccessTokenExpireTimeSpan = YourCustomExpiryTimeHere();
} 

But note, will need to be updated on every call or the last value you assign will be kept for the next login that occurs.


You have to set the expiration time in the TokenEndPoint method instead of GrantResourceOwnerCredentials method:

public override Task TokenEndpoint(OAuthTokenEndpointContext context)
{
    ...

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

    ...
}

I hope it helps.

EDIT

As pointed by Michael in his response to a similar question, if you have a different AccessTokenExpireTimeSpan for each client_id you can override the default configured AccessTokenExpireTimeSpan in the context options with the client one when validating the client authentication:

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

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

    ...
}