Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使承载令牌无效_C#_Security_Oauth 2.0_Token_Asp.net Web Api - Fatal编程技术网

C# 如何使承载令牌无效

C# 如何使承载令牌无效,c#,security,oauth-2.0,token,asp.net-web-api,C#,Security,Oauth 2.0,Token,Asp.net Web Api,我写了一个提供商,它通过用户名/密码制造了10年的不记名代币: public partial class Startup { private readonly TimeSpan _tokenLifetime = TimeSpan.FromDays(3600); public void ConfigureAuth(IAppBuilder app) { var config = new HttpConfiguration(); WebApiC

我写了一个提供商,它通过用户名/密码制造了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);
    }
}
公共部分类启动
{
私有只读TimeSpan _tokenLifetime=TimeSpan.FromDays(3600);
public void ConfigureAuth(IAppBuilder应用程序)
{
var config=新的HttpConfiguration();
WebApiConfig.Register(配置);
应用程序UseCors(CorsOptions.AllowAll);
app.CreatePerOwinContext(UsersDB.Create);
app.CreatePerOwinContext(UserManager.Create);
app.CreatePerOwinContext(RoleManager.Create);
app.UseAuthBearTokens(新的OAuthAuthorizationServerOptions
{
TokenEndpointPath=新路径字符串(“/getToken”),
Provider=新的ApplicationAuthProvider(新的UserManager(新的ApiUserStore(新的UsersDB())),
AccessTokenExpireTimeSpan=\u tokenLifetime,
AllowInsecureHttp=true,
});
app.UseWebApi(配置);
}
}
客户机必须获得令牌,并且必须将其用于Web API服务的所有方法。 如果客户端获得了新令牌,则旧令牌不会变为无效。客户端可以同时使用这两个令牌


如何使第一个令牌无效?

处理这些场景的标准方法是实现刷新令牌

最相关的好处是:

  • 由于令牌过期,您不需要请求用户和密码(您不会让令牌过期)
  • 您可以轻松撤销不允许刷新的用户访问权限
  • 您可以根据需要向新生成的令牌添加新的声明
看看这篇文章,您将得到如何实现它的完整解释