WebAPI2中基于令牌的安全性是无状态的吗?

问题描述 投票:0回答:1

我只是想了解以下代码:

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {
        var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();

        ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);

        if (user == null)
        {
            context.SetError("invalid_grant", "The user name or password is incorrect.");
            return;
        }

        ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
           OAuthDefaults.AuthenticationType);
        ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
            CookieAuthenticationDefaults.AuthenticationType);

        AuthenticationProperties properties = CreateProperties(user.UserName);
        AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
        context.Validated(ticket);
        context.Request.Context.Authentication.SignIn(cookiesIdentity);
    }

基于此行

context.Request.Context.Authentication.SignIn(cookiesIdentity);

[它似乎将每个令牌的声明身份信息(直到令牌过期)保留在服务器(会话)的cookie中的某个位置。它可能是一个字典,键为令牌,值作为ClaimsIdentity的对象。

oauth-2.0 asp.net-web-api2 bearer-token
1个回答
0
投票
  1. 基于用户名/密码和创建令牌的密钥
  2. 此令牌随每个请求传递。
  3. 如果此令牌不能更改,则声明该令牌无效。
  4. 因此没有任何sessionid需要令牌本身就足以所有。转到https://jwt.io/。在其主页上,您可以可视化令牌的创建和令牌的可视化
© www.soinside.com 2019 - 2024. All rights reserved.