Я реализовал JWT Auth в своем проекте. JWT генерируется с использованием приведенного ниже кода (принимая имя пользователя и переход от пользователя и находя его из базы данных) код ниже.
public AuthenticateResponse Authenticate(AuthenticateRequest model)
{
var userres = new Users { Username = model.Username, Password = model.Password };
var user = GetById(userres);
// return null if user not found
if (user == null) return null;
// authentication successful so generate jwt token
var token = generateJwtToken(user);
return new AuthenticateResponse(user, token);
}
private string generateJwtToken(Users user)
{
// generate token that is valid for 30 days
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new[] { new Claim("Username", user.Username.ToString()) }),
Expires = DateTime.UtcNow.AddDays(30),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
}
Следующее, что я не понимаю, как я могу аутентифицировать сгенерированный токен JWT каждый раз, когда пользователь отправляет мне получить доступ к API. Как это реализовать и как это работает? Я нашел много решений, но не понимаю, как они проверяют этот ключ?