Divisionz.Scaffold.WebApi.AccountService 1.0.0-rc826

Prefix Reserved
This is a prerelease version of Divisionz.Scaffold.WebApi.AccountService.
dotnet add package Divisionz.Scaffold.WebApi.AccountService --version 1.0.0-rc826
                    
NuGet\Install-Package Divisionz.Scaffold.WebApi.AccountService -Version 1.0.0-rc826
                    
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="Divisionz.Scaffold.WebApi.AccountService" Version="1.0.0-rc826" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Divisionz.Scaffold.WebApi.AccountService" Version="1.0.0-rc826" />
                    
Directory.Packages.props
<PackageReference Include="Divisionz.Scaffold.WebApi.AccountService" />
                    
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 Divisionz.Scaffold.WebApi.AccountService --version 1.0.0-rc826
                    
#r "nuget: Divisionz.Scaffold.WebApi.AccountService, 1.0.0-rc826"
                    
#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 Divisionz.Scaffold.WebApi.AccountService@1.0.0-rc826
                    
#: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=Divisionz.Scaffold.WebApi.AccountService&version=1.0.0-rc826&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Divisionz.Scaffold.WebApi.AccountService&version=1.0.0-rc826&prerelease
                    
Install as a Cake Tool

Divisionz.Scaffold.WebApi.AccountService

Account Service формирует JWT токен пользователя соотвествующий rfc7519. Для формирования подписи используется асимметричное шифрование RSA с алгоритмом RS512. Account Service может аутентифицировать пользователя следующим списком возможностей:

  • Пара логин, пароль. Это внутренний пользователи сервиса, которые может создавать администратор. Пароли, пользователи при этом хранятся в БД
  • LDAP аутентификация. Производится при помощи вызова метода Bind протокола LDAP. Логин и пароль пользователя при этом передаётся на сервер.
  • Windows SSO аутентификация. В этом случае используется схема Negotiate, котороя позволяет выбрать между клиенту выбрать между NTLM и Kerberos аутентификацией. В этом случае логин и пароль не передаётся в сторону AccountService. Адрес аккант сервиса должен быть в списке доверенных узлов корпоративной сети, в "Свойстве обозревателя". Для этой зоны должна быть включена опция "автоматическая передача данных пользователя".

В полезной нагрузке JWT токена присутствует claim с типом 'http://schemas.divisionz.ru/api/identity/claims/permissions' значением которого являются перечисленные через запятую разрешения. Например "CreateTask,DeleteTask".

Многие методы api других сервисов настроены на проверку наличия отдельных разрешений. При этом, по умолчанию, во время запуска сервиса происходит синхронизация пермишнов относящихся к этому сервису, что позволяет держать набор разрешений всегда корректным.

Для того чтобы AccountService выдал все необходимые разрешения пользователям необходимо создать следующие объекты:

  • Набор разрешений (PermissionSet) и с помощью PermissionSetPermissions наполнить его разрешениями. Это просто удобная группировка разрешений.
  • Создать Роли (Roles) и добавить к каждой роле набор разрешений (RolePermissionSet)
  • Создать Группы (Groups) и к каждой группе назначить Роль с помощью GroupRole

Т.о. алгоритм формирования пермишнов выглядит следующим образом:

  1. Определяются группы пользователя по следующим алгоритмам
    1. Для внутренних пользователей получаем группы, аналогично тому как это происходит в UserGroups
    2. Для внешинх пользователей аутентифицированных с помощью LDAP или Winodows SSO аутентификации отправляется серия запросов по протоколу LDAP в настроенные сервера
  2. По полученным группам в предыдущем пункте определяются роли, аналогично тому, как это происходит в ендпойнте GroupRole. Отдельно стоит обратить внимание на то, что для внешних пользователей необходимо обеспечить наличие таких же групп в самом AccountService
  3. По ролям определяются наборы разрешений
  4. По наборам разрешений уже можно получить сами разрешения
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  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 was computed.  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 was computed.  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

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0-rc826 49 7/5/2026
1.0.0-rc825 51 7/5/2026
1.0.0-rc824 54 7/5/2026
1.0.0-rc823 58 7/5/2026
1.0.0-rc822 48 7/4/2026
1.0.0-rc821 49 7/4/2026
1.0.0-rc819 55 7/2/2026
1.0.0-rc817 46 7/1/2026
1.0.0-rc816 57 6/24/2026
1.0.0-rc815 60 6/22/2026
1.0.0-rc814 57 5/24/2026
1.0.0-rc813 63 5/23/2026
1.0.0-rc812 58 5/21/2026
1.0.0-rc811 59 5/16/2026
1.0.0-rc810 62 5/16/2026
1.0.0-rc809 61 4/14/2026
1.0.0-rc808 89 2/11/2026
1.0.0-rc807 79 2/8/2026
1.0.0-rc806 88 1/15/2026
1.0.0-rc805 82 1/13/2026
Loading failed