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#.