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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Tisa.Authorization" Version="2025.9.10.1120" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tisa.Authorization" Version="2025.9.10.1120" />
                    
Directory.Packages.props
<PackageReference Include="Tisa.Authorization" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Tisa.Authorization --version 2025.9.10.1120
                    
#r "nuget: Tisa.Authorization, 2025.9.10.1120"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Tisa.Authorization@2025.9.10.1120
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Tisa.Authorization&version=2025.9.10.1120
                    
Install as a Cake Addin
#tool nuget:?package=Tisa.Authorization&version=2025.9.10.1120
                    
Install as a Cake Tool

Tisa.Authorization

NuGet Version License

Библиотека авторизации для .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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.