Skip to content Skip to sidebar Skip to footer

Asp.Net Core 2 Token Аутентификация

ASP.NET Core 2 предоставляет возможность реализации аутентификации и авторизации с использованием токенов. Токены позволяют безопасно передавать информацию о пользователе и его правах между клиентом и сервером. В данной статье мы рассмотрим пример использования токенов для аутентификации в ASP.NET Core 2.

Для начала необходимо подключить необходимые пакеты NuGet. Для работы с токенами нам понадобятся пакеты Microsoft.AspNetCore.Authentication и Microsoft.AspNetCore.Authentication.JwtBearer. После установки пакетов необходимо настроить сервисы в методе ConfigureServices в классе Startup.

«`csharp
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Configuration[Jwt:Issuer],
ValidAudience = Configuration[Jwt:Issuer],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration[Jwt:Key]))
};
});
«`

Далее необходимо добавить middleware аутентификации и авторизации в метод Configure.

«`csharp
app.UseAuthentication();
app.UseAuthorization();
«`

Теперь мы можем создать контроллер, который будет отвечать за выдачу токенов.

«`csharp
[Route(api/[controller])]
[ApiController]
public class TokenController : ControllerBase
{
private readonly IConfiguration _configuration;

public TokenController(IConfiguration configuration)
{
_configuration = configuration;
}

[HttpPost]
public IActionResult Post([FromBody] User user)
{
if (user.Username == admin && user.Password == admin)
{
var token = GenerateToken();
return Ok(new { token });
}

return Unauthorized();
}

private string GenerateToken()
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration[Jwt:Key]));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken(
_configuration[Jwt:Issuer],
_configuration[Jwt:Issuer],
null,
expires: DateTime.Now.AddMinutes(120),
signingCredentials: credentials);

return new JwtSecurityTokenHandler().WriteToken(token);
}
}
«`

В данном примере, если пользователь с именем и паролем admin успешно проходит аутентификацию, ему выдается токен, который будет действителен в течение 2 часов. Теперь мы можем использовать этот токен для доступа к защищенным ресурсам.

«`csharp
[Authorize]
[Route(api/[controller])]
[ApiController]
public class SecureController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
return Ok(Secure data);
}
}
«`

Теперь, чтобы получить доступ к методу Get контроллера SecureController, необходимо предоставить токен в заголовке запроса.

«`http
GET /api/secure HTTP/1.1
Host: localhost:5000
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vYXBpLmNvbSIsImF1ZCI6Imh0dHA6Ly9hcGkuY29tIiwiaWF0IjoxNTE2MjM5MDIyLCJleHAiOjE1MTYyMzkwMjJ9.0g8qX1V0Q8n3u2yqFmZ0xjEfW0y2xRiPjWv4pK5x6Wg
«`

Таким образом, использование токенов для аутентификации в ASP.NET Core 2 позволяет обеспечить безопасность передачи данных между клиентом и сервером и управление доступом к защищенным ресурсам.

© KiberSec.ru – 05.04.2025, обновлено 05.04.2025
Перепечатка материалов сайта возможна только с разрешения администрации KiberSec.ru.