Общие шаги
Правильно, вам необходимо выполнить следующие шаги:
- Вернуть токен из вашего API аутентификации.
- Сконфигурируйте ваше приложение для аутентификации JWT Bearer.
- Включайте этот токен как часть заголовка
authorize
при каждом запросе к серверу. - Требуйте аутентификацию / авторизацию в вашемконтроллеры.
Существует отличное ASP.NET Core 2.2 JWT учебное пособие по аутентификации , которое вы должны проверить.
Слишком много кода задействовано, чтобы опубликовать все это целиком, но вот несколько ключевых фрагментов (некоторый код немного изменен для большей ясности вне контекста учебника):
Некоторые ключиФрагменты кода
Создание токена
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.ASCII.GetBytes(_appSettings.Secret);
var tokenDescriptor = new SecurityTokenDescriptor
{
Subject = new ClaimsIdentity(new Claim[]
{
// 'user' is the model for the authenticated user
// also note that you can include many claims here
// but keep in mind that if the token causes the
// request headers to be too large, some servers
// such as IIS may reject the request.
new Claim(ClaimTypes.Name, user.Id.ToString())
}),
Expires = DateTime.UtcNow.AddDays(7),
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
};
var token = tokenHandler.CreateToken(tokenDescriptor);
return tokenHandler.WriteToken(token);
Настройка аутентификации JWT (в методе Startup.cs ConfigureServices)
var appSettings = appSettingsSection.Get<AppSettings>();
var key = Encoding.ASCII.GetBytes(appSettings.Secret);
services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(x =>
{
x.RequireHttpsMetadata = false;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(key),
ValidateIssuer = false,
ValidateAudience = false
};
});
Не забудьте настроить приложение на использовать аутентификацию в Startup.cs Configure
метод:
app.UseAuthentication();