Что такое JWT-токен в C#

JWT (JSON Web Token) — это стандарт для создания безопасных токенов, представленных в виде компактной строки формата JSON, используемых для передачи информации между сторонами. В C# JWT применяется для аутентификации и авторизации пользователей в веб-приложениях и API.

Структура JWT

Токен состоит из следующих компонентов:

  • Заголовок (Header): содержит информацию о типе токена и алгоритме шифрования.
  • Полезная нагрузка (Payload): включает утверждения (claims), которые могут содержать сведения о пользователе и другую необходимую информацию.
  • Подпись (Signature): обеспечивает целостность токена и подтверждает его подлинность.

Каждая часть кодируется с использованием Base64Url и объединяется в единую строку с разделителем в виде точки.

Создание JWT-токена в C#

Ниже приведен пример создания JWT-токена с использованием класса JwtSecurityToken из библиотеки System.IdentityModel.Tokens.Jwt.

using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using Microsoft.IdentityModel.Tokens;
using System.Text;

public class TokenService
{
    public string GenerateToken()
    {
        var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("СекретныйКлючДляТокена"));
        var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
        var tokenDescriptor = new JwtSecurityToken(
            issuer: "ExampleIssuer",
            audience: "ExampleAudience",
            claims: new[]
            {
                new Claim(ClaimTypes.NameIdentifier, "1"),
                new Claim(ClaimTypes.Role, "Administrator")
            },
            expires: DateTime.Now.AddHours(1),
            signingCredentials: credentials
        );
        return new JwtSecurityTokenHandler().WriteToken(tokenDescriptor);
    }
}

JWT-токен обеспечивает эффективную передачу данных между системами, позволяя реализовать надежные механизмы аутентификации и авторизации в приложениях на C#.