[ Полезный рекламный блок ]
Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.
Аутентификация — важный аспект построения безопасных веб-интерфейсов API в ASP.NET Core. Вот пошаговое руководство по выполнению аутентификации в ASP.NET Core Web API:
1. Создание проекта ASP.NET Core Web API
Создайте новый проект ASP.NET Core Web API с помощью Visual Studio или .NET CLI. Вы можете выбрать любой шаблон, например, «ASP.NET Core Web API» или «ASP.NET Core Empty» и добавить необходимые пакеты NuGet для последующей аутентификации.
2. Выберите метод аутентификации.
ASP.NET Core поддерживает различные методы аутентификации, такие как JWT (JSON Web Tokens), OAuth, OpenID Connect и другие. Выберите метод аутентификации, который соответствует вашим требованиям.
3. Добавьте пакеты NuGet.
Установите пакеты NuGet для выбранного вами метода аутентификации. Например, если вы используете JWT, вы можете установить NuGet-пакет Microsoft.AspNetCore.Authentication.JwtBearer.
4. Настройка аутентификации.
Настройте параметры аутентификации в файле Program.cs. Например, если вы используете JWT, вы можете настроить его следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.Extensions.Configuration; using Microsoft.IdentityModel.Tokens; using System.Text; var builder = WebApplication.CreateBuilder(args); builder.Services.AddControllersWithViews(); // добавляем сервисы MVC builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { // Настройка JWT IConfigurationSection jwtConfig = builder.Configuration.GetSection("Jwt"); options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = jwtConfig["Issuer"], ValidAudience = jwtConfig["Audience"], IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtConfig["SecretKey"])) }; }); var app = builder.Build(); // устанавливаем сопоставление маршрутов с контроллерами app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run(); |
5. Используйте аутентификацию.
Защитите конечные точки API, добавив атрибут [Authorize] к контроллеру или действию, требующему аутентификации. Создайте папку Controllers и добавьте в нее контроллер HomeController, со следующим содержимым:
1 2 3 4 5 6 7 8 9 10 11 |
[Authorize] [ApiController] [Route("api/[controller]")] public class HomeController : Controller { [HttpGet] public IActionResult Get() { return Content("You`re in!"); } } |
6. Генерируйте и проверяйте токены (при использовании JWT).
Если вы используете JWT, вам необходимо сгенерировать и подтвердить токены в вашем API. Для этого вы можете использовать такие библиотеки, как System.IdentityModel.Tokens.Jwt. Вот пример генерации токена JWT:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public string GenerateJwtToken(string secretKey, string issuer, string audience, IEnumerable<Claim> claims, int expiresMinutes = 60) { var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secretKey)); var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: issuer, audience: audience, claims: claims, expires: DateTime.Now.AddMinutes(expiresMinutes), signingCredentials: credentials ); var tokenHandler = new JwtSecurityTokenHandler(); return tokenHandler.WriteToken(token); } |
А вот пример проверки токена JWT:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public bool ValidateJwtToken(string token, TokenValidationParameters validationParameters) { var tokenHandler = new JwtSecurityTokenHandler(); try { ClaimsPrincipal claimsPrincipal = tokenHandler.ValidateToken(token, validationParameters, out SecurityToken validatedToken); return true; } catch { return false; } } |
7. Настройка параметров аутентификации.
Вы можете настроить параметры аутентификации, такие как эмитент, аудитория, секретный ключ и т.д., в файле appsettings.json или любом другом источнике конфигурации. Вот пример:
1 2 3 4 5 6 7 |
{ "Jwt": { "Issuer": "https://example.com", "Audience": "https://example.com", "SecretKey": "your_secret_key_here" } } |
8. Тестирование аутентификации.
Вы можете протестировать аутентификацию вашего ASP.NET Core Web API с помощью таких инструментов, как Postman или curl, включив маркер в заголовок Authorization ваших запросов. Например, для аутентификации JWT вы можете включить маркер в качестве маркера на предъявителя в заголовок Authorization следующим образом:
1 |
Authorization: Bearer {your_token_here} |
Я надеюсь, что вам понравилось читать эту статью, и она оказалась легкой для понимания. Пожалуйста, дайте мне знать, если у вас есть какие-либо комментарии или исправления.
Так же вам может быть интересна предыдущая статья — Как прочесть значения AppSettings из файла .json в ASP.NET Core.
Вы хотите научится писать код на языке программирования C#?
Создавать различные информационные системы, состоящие из сайтов, мобильных клиентов, десктопных приложений, телеграмм-ботов и т.д.
Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:
- Доступ к пройденному материалу
- Тематические статьи
- Библиотека книг
- Онлайн тестирование
- Общение в закрытых группах
Живи в своем мире, программируй в нашем.
Спасибо, все понятно