如何使Bearer令牌无效

时间:2014-07-14 09:47:48

标签: c# security oauth-2.0 token asp.net-web-api

我写了一个提供商,通过用户名/密码制作bearer-tokens 10年:

public partial class Startup
{
    private readonly TimeSpan _tokenLifetime = TimeSpan.FromDays(3600);

    public void ConfigureAuth(IAppBuilder app)
    {
        var config = new HttpConfiguration();
        WebApiConfig.Register(config);
        app.UseCors(CorsOptions.AllowAll);

        app.CreatePerOwinContext(UsersDB.Create);
        app.CreatePerOwinContext<UserManager>(UserManager.Create);
        app.CreatePerOwinContext<RoleManager>(RoleManager.Create);

        app.UseOAuthBearerTokens(new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/getToken"),
            Provider = new ApplicationOAuthProvider(new UserManager(new ApiUserStore(new UsersDB()))),
            AccessTokenExpireTimeSpan = _tokenLifetime,
            AllowInsecureHttp = true,
        });

        app.UseWebApi(config);
    }
}

客户端必须获取令牌,并且必须将其用于所有Web API服务方法。 如果客户端获得新令牌,则旧令牌不会变为无效。客户端可以同时使用这两个令牌。

如何使第一个令牌无效?

1 个答案:

答案 0 :(得分:3)

处理这些方案的标准方法是实施刷新令牌 arquitecture。

最相关的好处:

  • 由于令牌过期,您不需要请求用户和密码(您不会让令牌过期)。
  • 您可以轻松撤消不允许其刷新的用户访问权。
  • 您可以根据需要向新生成的代币添加新的声明。

看看这篇文章,您将获得如何实现它的完整解释。

http://bitoftech.net/2014/07/16/enable-oauth-refresh-tokens-angularjs-app-using-asp-net-web-api-2-owin/