加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

oauth-2.0 – 覆盖AccessTokenExpireTimeSpan

发布时间:2020-12-15 23:51:49 所属栏目:asp.Net 来源:网络整理
导读:是否可以覆盖自定义OAuthAuthorizationServerProvider上特定票证的默认AccessTokenExpireTimeSpan?所有其他票证的默认到期时间为15分钟. public public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context){
是否可以覆盖自定义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);

    ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读