如何在服务器上使持有者令牌失效

本文关键字:持有者 令牌 失效 服务器 | 更新日期: 2023-09-27 18:33:48

我在登录时将所有生成的持有者令牌保存到数据库中。现在我想检查数据库中是否存在请求承载者,拒绝它。我应该把它放在哪里?

请注意,我希望这发生在 Owin 管道中。(不在 webapi 管道中。例如在 [Authorize] 属性中)

如何在服务器上使持有者令牌失效

像这样从OAuthBearerAuthenticationProvider继承:

public class ApplicationOAuthBearerAuthenticationProvider : OAuthBearerAuthenticationProvider
{    
    public override Task ValidateIdentity(OAuthValidateIdentityContext context)
    {            
        var result=  base.ValidateIdentity(context);
        if (context.IsValidated )
        {
            var ticket = context.Ticket;
            if (ticket != null && ticket.Identity.IsAuthenticated && ticket.Properties.ExpiresUtc > DateTime.UtcNow)
            {
                if (1==2)//TODO: put your server side condition here
                {
                    context.SetError("HaHa!");
                }
            }
        }
        return result;
    }
}

并在您的startup.cs类中使用它,如下所示:

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions
        {
            Provider = new ApplicationOAuthBearerAuthenticationProvider(),             
        });  
    }
}