是否可以覆盖自定义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/