C# 如何使承载令牌无效
我写了一个提供商,它通过用户名/密码制造了10年的不记名代币: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
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服务的所有方法。
如果客户端获得了新令牌,则旧令牌不会变为无效。客户端可以同时使用这两个令牌
如何使第一个令牌无效?处理这些场景的标准方法是实现刷新令牌 最相关的好处是:
- 由于令牌过期,您不需要请求用户和密码(您不会让令牌过期)
- 您可以轻松撤销不允许刷新的用户访问权限
- 您可以根据需要向新生成的令牌添加新的声明