我想知道如何阻止用户同时使用多个刷新令牌.让我解释:
问题是,如果另一个用户使用相同的凭据登录,则将为同一身份生成另一个刷新令牌.所以,我想要做的是:如果某人使用具有活动刷新令牌的某些凭据再次登录,而不是生成新的凭证,请替换现有的,或删除它并插入新的.因此,当访问令牌到期时,先前的用户将被断开,因为刷新令牌不再存在.
另外,我如何实现一些服务来销毁认证服务器中的刷新令牌?因此,用户可以调用它来断开他的帐户,而不仅仅是删除cookie并等到它过期.
这是我的代码:
Startup.cs:
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}"
);
app.UseOAuthAuthorizationServer(new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/auth"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(1),
Provider = new OAuthProvider(),
RefreshTokenProvider = new RefreshTokenProvider()
});
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
app.UseWebApi(config);
}
}
Run Code Online (Sandbox Code Playgroud)
OAuthProvider.cs:
public class OAuthProvider : OAuthAuthorizationServerProvider
{
public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
return Task.FromResult<object>(null);
}
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{ …Run Code Online (Sandbox Code Playgroud)