Tisa.Authorization
2025.9.10.1120
dotnet add package Tisa.Authorization --version 2025.9.10.1120
NuGet\Install-Package Tisa.Authorization -Version 2025.9.10.1120
<PackageReference Include="Tisa.Authorization" Version="2025.9.10.1120" />
<PackageVersion Include="Tisa.Authorization" Version="2025.9.10.1120" />
<PackageReference Include="Tisa.Authorization" />
paket add Tisa.Authorization --version 2025.9.10.1120
#r "nuget: Tisa.Authorization, 2025.9.10.1120"
#:package Tisa.Authorization@2025.9.10.1120
#addin nuget:?package=Tisa.Authorization&version=2025.9.10.1120
#tool nuget:?package=Tisa.Authorization&version=2025.9.10.1120
Tisa.Authorization
Библиотека авторизации для .NET приложений, разработанная компанией ТИСА. Предоставляет гибкую и расширяемую систему авторизации на основе разрешений (permissions) и ролей для ASP.NET Core приложений.
Возможности
- Поддержка .NET 8.0, .NET 9.0 и .NET 10.0
- Интеграция с ASP.NET Core Authorization
- Система разрешений (Permissions) на основе enum
- Система ролей (Roles) с поддержкой полномочий
- JWT токены и работа с claims
- Динамическое создание политик авторизации
- Атрибуты для декларативной авторизации
- Расширяемая система провайдеров (JWT, Claims, Roles)
- Интеграция с Tisa.Common
Установка
dotnet add package Tisa.Authorization
Начало работы
Регистрация сервисов
Для регистрации сервисов авторизации используйте метод расширения:
using Microsoft.Extensions.DependencyInjection;
using Tisa.Authorization;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthorization();
// Регистрация провайдера политик авторизации
services.AddSingleton<IAuthorizationPolicyProvider, PermissionAuthorizationPolicyProvider>();
// Регистрация обработчика разрешений
services.AddSingleton<IAuthorizationHandler, PermissionAuthorizationHandler>();
// Регистрация провайдеров (опционально)
services.AddTransient<IClientClaimsProvider, ClaimsProvider>();
services.AddTransient<IRoleProvider, RoleProvider>();
}
}
Использование атрибутов авторизации
Атрибут HasPermission
Используйте атрибут HasPermissionAttribute для защиты действий контроллера:
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Tisa.Authorization.Attributes;
using Tisa.Authorization.Abstractions;
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase
{
[HttpGet]
[HasPermission(Permission.UserRead)]
public IActionResult GetUsers()
{
return Ok();
}
}
Стандартный атрибут Authorize
Также можно использовать стандартный атрибут Authorize с именем разрешения:
[Authorize(Policy = "UserRead")]
public IActionResult GetUsers()
{
return Ok();
}
Работа с разрешениями
Библиотека предоставляет enum Permission для определения разрешений:
using Tisa.Authorization.Abstractions;
// Доступные разрешения:
// - Permission.None - отсутствие полномочий
// - Permission.UserRead - чтение пользователя
// - Permission.AccessEverything - абсолютный доступ
Работа с ролями
Система ролей основана на классе Role:
using Tisa.Authorization.Abstractions;
// Стандартные роли:
// - Role.User - пользовательская роль (имеет Permission.UserRead)
// - Role.Administrator - административная роль (имеет Permission.AccessEverything)
// Получение роли по имени
var role = Role.FromName("User").Value;
var permissions = role.GetPermissions();
Работа с клиентами и Claims
Для работы с клиентами и генерации claims используйте IClientClaimsProvider:
using Tisa.Authorization.Abstractions;
using Tisa.Authorization.Models;
using System.Security.Claims;
public class MyService
{
private readonly IClientClaimsProvider _claimsProvider;
public MyService(IClientClaimsProvider claimsProvider)
{
_claimsProvider = claimsProvider;
}
public IEnumerable<Claim> GetClaims(Client client)
{
return _claimsProvider.GetClaimsForClient(client);
}
}
Модель Client
Модель Client представляет клиента приложения:
using Tisa.Authorization.Models;
var client = new Client
{
Token = "client-token",
Name = "Client Name"
};
client.AddRole("User");
client.AddRole("Administrator");
Провайдер JWT токенов
Для работы с JWT токенами реализуйте интерфейс IJwtProvider:
using Tisa.Authorization.Abstractions;
using Tisa.Authorization.Models;
public class MyJwtProvider : IJwtProvider
{
public AccessTokens GetAccessTokens(Client client)
{
// Реализация генерации токенов
return new AccessTokens();
}
}
Структура проекта
Abstractions/- Базовые интерфейсы и абстрактные классы (Permission, Role, IJwtProvider, IRoleProvider, IClientClaimsProvider)Attributes/- Атрибуты для декларативной авторизации (HasPermissionAttribute)Filters/- Фильтры для авторизации (зарезервировано)Handlers/- Обработчики авторизации (PermissionAuthorizationHandler)Models/- Модели данных (Client, AccessTokens, ClientTokenResponse)Providers/- Провайдеры авторизации (PermissionAuthorizationPolicyProvider, ClaimsProvider, RoleProvider)Requirements/- Требования авторизации (PermissionRequirement)
Основные компоненты
PermissionAuthorizationPolicyProvider
Провайдер политик авторизации, который динамически создает политики на основе имен разрешений. Если политика с указанным именем не найдена, создается новая политика с требованием PermissionRequirement.
PermissionAuthorizationHandler
Обработчик авторизации, который проверяет наличие необходимого разрешения у пользователя. Разрешения извлекаются из claims типа CustomClientClaimTypes.Permissions.
HasPermissionAttribute
Атрибут для декларативной авторизации действий контроллера на основе enum Permission.
Типы Claims
Библиотека использует следующие типы claims (определены в CustomClientClaimTypes):
FullName- полное имя клиентаIsSetupComplete- флаг завершения настройкиPermissions- список разрешений клиента
Схемы аутентификации
Определены константы схем аутентификации в классе AuthScheme:
ApiKey- передача токена в заголовке запросаToken- передача токена в параметре запроса
Требования
- .NET 8.0, .NET 9.0 или .NET 10.0
- Microsoft.AspNetCore.Authorization (версия зависит от целевой платформы)
- System.IdentityModel.Tokens.Jwt 8.14.0
- Tisa.Common
Авторы
Команда разработчиков TISA
Лицензия
MIT License
Поддержка
Для получения поддержки или сообщения об ошибках, пожалуйста, напишите нам на support@tisn.ru
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Lindhart.Analyser.MissingAwaitWarning (>= 2.0.0)
- Microsoft.AspNetCore.Authorization (>= 10.0.0)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- Tisa.Common (>= 2025.9.10.1120)
-
net8.0
- Lindhart.Analyser.MissingAwaitWarning (>= 2.0.0)
- Microsoft.AspNetCore.Authorization (>= 8.0.22)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- Tisa.Common (>= 2025.9.10.1120)
-
net9.0
- Lindhart.Analyser.MissingAwaitWarning (>= 2.0.0)
- Microsoft.AspNetCore.Authorization (>= 9.0.10)
- System.IdentityModel.Tokens.Jwt (>= 8.14.0)
- Tisa.Common (>= 2025.9.10.1120)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Tisa.Authorization:
| Package | Downloads |
|---|---|
|
Tisa.XrmApp
Базовые классы и компоненты приложений ТИСА для работы с использованием NetCore. |
|
|
Tisa.BpmApp
Базовые классы и компоненты приложений ТИСА для работы с использованием NetCore на платформе BPMSoft. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 2025.9.10.1120 | 382 | 11/17/2025 | |
| 2025.9.9.1111 | 304 | 11/12/2025 | |
| 2025.9.9.1105 | 212 | 10/30/2025 | |
| 2025.9.9.1101 | 318 | 10/28/2025 | |
| 2025.9.9.1100 | 213 | 10/28/2025 | |
| 2025.9.9.410 | 275 | 4/9/2025 | |
| 2025.9.9.400 | 348 | 4/8/2025 |