VOOZH about

URL: https://www.nuget.org/packages/Tisa.Authorization/

⇱ NuGet Gallery | Tisa.Authorization 2026.9.10.321




Tisa.Authorization 2026.9.10.321

dotnet add package Tisa.Authorization --version 2026.9.10.321
 
 
NuGet\Install-Package Tisa.Authorization -Version 2026.9.10.321
 
 
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="2026.9.10.321" />
 
 
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tisa.Authorization" Version="2026.9.10.321" />
 
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 2026.9.10.321
 
 
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Tisa.Authorization, 2026.9.10.321"
 
 
#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@2026.9.10.321
 
 
#: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=2026.9.10.321
 
Install as a Cake Addin
#tool nuget:?package=Tisa.Authorization&version=2026.9.10.321
 
Install as a Cake Tool
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Tisa.Authorization

👁 NuGet Version

Библиотека авторизации для .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.16.0
  • Tisa.Common

Лицензия

MIT License

Поддержка

По вопросам поддержки и сообщений об ошибках: support@tisn.ru

Product Versions Compatible and additional computed target framework versions.
.NET net8.0 net8.0 is compatible.  net8.0-android net8.0-android was computed.  net8.0-browser net8.0-browser was computed.  net8.0-ios net8.0-ios was computed.  net8.0-maccatalyst net8.0-maccatalyst was computed.  net8.0-macos net8.0-macos was computed.  net8.0-tvos net8.0-tvos was computed.  net8.0-windows net8.0-windows was computed.  net9.0 net9.0 is compatible.  net9.0-android net9.0-android was computed.  net9.0-browser net9.0-browser was computed.  net9.0-ios net9.0-ios was computed.  net9.0-maccatalyst net9.0-maccatalyst was computed.  net9.0-macos net9.0-macos was computed.  net9.0-tvos net9.0-tvos was computed.  net9.0-windows net9.0-windows was computed.  net10.0 net10.0 is compatible.  net10.0-android net10.0-android was computed.  net10.0-browser net10.0-browser was computed.  net10.0-ios net10.0-ios was computed.  net10.0-maccatalyst net10.0-maccatalyst was computed.  net10.0-macos net10.0-macos was computed.  net10.0-tvos net10.0-tvos was computed.  net10.0-windows 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.