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

时间:2018-08-02 13:23:20

标签: c# asp.net-web-api2 owin bearer-token

我对从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());            
    }

1 个答案:

答案 0 :(得分:0)

您遇到的问题是,承载令牌位于客户端,因此从头到尾实际上没有太多方法可以使用。在OAuth中取消对用户进行身份验证的唯一方法是在客户端上删除令牌。

还有其他一些方法,例如创建自定义用户会话。请查看此博客文章,以获取有关如何执行此操作的更详细说明:http://www.nakov.com/blog/2014/12/22/webapi-owin-identity-custom-login-service/

您可以执行的另一种方法是将令牌的寿命缩短到相当短的时间。这可能具有几乎相同的效果,但我怀疑您在寻找什么。