如何从 Owin 服务器中删除移动设备用户的令牌

How to remove mobile device user's token from Owin server

我在从 Owin 服务器上删除不记名令牌时遇到问题。我的计划是当移动设备用户单击注销按钮时,用户令牌必须从我的 owin 服务器中删除。有什么解决办法吗?如果你的回答不是,我可以改变我的想法,我会接受不同的想法。

这是我的 Startup.cs:

    public void Configuration(IAppBuilder app)
    {
        HttpConfiguration config = new HttpConfiguration();

        config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

        ConfigureOAuth(app);
        WebApiConfig.Register(config);
        app.UseWebApi(config);
    }
    public void ConfigureOAuth(IAppBuilder app)
    {
        OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
        {
            TokenEndpointPath = new PathString("/api/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(7), 
            AllowInsecureHttp = true,                          
            Provider = new SimpleAuthorizationServerProvider(),
            RefreshTokenProvider = new SimpleRefreshTokenProvider()  
        };
        app.UseOAuthAuthorizationServer(OAuthServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());            
    }

您遇到的问题是不记名令牌存在于客户端,因此从您这端确实没有太多方法可以做到这一点。在 OAuth 中取消用户身份验证的唯一方法是删除客户端的令牌。

您还可以通过其他方式进行处理,例如创建自定义用户会话。查看此博客 post 以获取有关如何执行此操作的更详细说明:http://www.nakov.com/blog/2014/12/22/webapi-owin-identity-custom-login-service/

您可以采用的另一种方法是将令牌的使用寿命缩短到相当短的时间。这可能会产生接近相同的效果,但我怀疑您正在寻找什么。