小编Jul*_*era的帖子

OWIN ASP.NET - 避免在Web Api中没有Identity的同一帐户进行多次登录

我想知道如何阻止用户同时使用多个刷新令牌.让我解释:

  • 有些用户使用凭据要求新的访问令牌.
  • 凭据是密钥,因此身份验证服务器返回访问令牌和刷新令牌.
  • 当访问令牌到期时,用户必须使用新的刷新令牌而不是凭据来获取新的访问令牌.

问题是,如果另一个用户使用相同的凭据登录,则将为同一身份生成另一个刷新令牌.所以,我想要做的是:如果某人使用具有活动刷新令牌的某些凭据再次登录,而不是生成新的凭证,请替换现有的,或删除它并插入新的.因此,当访问令牌到期时,先前的用户将被断开,因为刷新令牌不再存在.

另外,我如何实现一些服务来销毁认证服务器中的刷新令牌?因此,用户可以调用它来断开他的帐户,而不仅仅是删除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)

c# asp.net authentication asp.net-web-api owin

6
推荐指数
1
解决办法
1360
查看次数

标签 统计

asp.net ×1

asp.net-web-api ×1

authentication ×1

c# ×1

owin ×1