Проверяйте SecurityStamp на каждый запрос, используя идентификатор токена asp.net - PullRequest
0 голосов
/ 23 февраля 2019

Я использую asp.net identiy для защиты моего API, я использую следующую функцию для создания Access Token для пользователей, когда они входят в систему

private string GenerateAccessToken(string userName, string role)
        {
            ClaimsIdentity oAuthIdentity = new ClaimsIdentity(Startup.OAuthOptions.AuthenticationType);

            oAuthIdentity.AddClaim(new Claim(ClaimTypes.Name, userName));
            oAuthIdentity.AddClaim(new Claim(ClaimTypes.Role, role));

            AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, new AuthenticationProperties());

            DateTime currentUtc = DateTime.UtcNow;
            ticket.Properties.IssuedUtc = currentUtc;
            ticket.Properties.ExpiresUtc = currentUtc.Add(TimeSpan.FromDays(365));

            string accessToken = Startup.OAuthOptions.AccessTokenFormat.Protect(ticket);

            Request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", accessToken);

            return accessToken;
        }

Все хорошо, пока я не выполню обновление пароля учетной записи,после этого я обновляю SecurityStamp

UserManager.UpdateSecurityStampAsync(loggedinUser.Id);

, но проблема в том, что токен все еще можно использовать для вызова моего API без каких-либо проблем.Так как мне проверять SecurityStamp с каждым запросом?

...