Передача групп пользователя в ответе ресурсу
Если на вашем ресурсе уже реализована авторизация на основе групп ActiveDirectory, она может сломаться, потому что ресурс теперь будет обращаться не в ActiveDirectory, а в компонент RadiusProxy. Чтобы доставить знание о группах пользователя до ресурса, настройте RadiusProxy.
Как настроить
- В корневой папке RadiusProxy откройте файл appsettings.json.
- Перейдите к блоку ResponseTransformConfiguration.UserGroupsTransformRule и добавьте поля (подробнее см. Примеры):
- Attribute — название атрибута, в котором передавать группы пользователя. Подробнее об Attribute.
- TransferMode — способ передачи атрибута. Допустимые значения: Multiple | Delimiter. Подробнее о TransferMode.
Multiple — в случае нескольких групп передает атрибут несколько раз, каждый раз по одной группе.
Delimiter — в случае нескольких группа передает атрибут один раз, все группы записаны в одну строку через разделитель. - Delimiter — разделитель, через который будут записаны группы, если TransferMode = Delimiter. Подробнее о TransferMode.
- GroupNameTemplate — шаблон для преобразования названия группы. Всегда должен содержать подстроку "{GroupName}". Подстрока "{GroupName}" будет заменена на оригинальное название группы.
- KnownGroups — массив строк, который отвечает за то, какие группы (если пользователь в них состоит) стоит передавать в атрибутах. Если массив пустой или параметр не представлен вообще, то передаются все группы пользователя с учётом вложенности. Подробнее о KnownGroups.
Пояснения
Редко, но некоторые ресурсы могут требовать, чтобы группы пересылались в атрибутах, которые RadiusProxy может не знать. Список известных атрибутов находится в корневой папке «RadiusProxy» → «Content» → «radius.Dictionary». Этот файл можно открыть в любом текстовом редакторе. Поиском можно найти нужный атрибут.
Если его нет, добавьте его. Для этого допишите строку вида:
VendorSpecificAttribute Vendor-Id Vendor-Type VendorAttributeName string
Где:
- VendorSpecificAttribute — константа;
- Vendor-Id — идентификатор вендора в словарях Radius.
- Vendor-Type — идентификатор (тип) атрибута вендора.
- VendorAttributeName — название атрибута.
- string - тип данных атрибута.
Предположим, что пользователь состоит в группах:
- Developers;
- New Users;
- HomeOffice Users.
Предположим, что конфигурация заполнена следующим образом:
...
"Attribute": "Class",
"TransferMode": "Multiple",
...
Тогда в ответе будут атрибуты:
- Class: Developers;
- Class: New Users;
- Class: HomeOffice Users.
Предположим, что конфигурация заполнена следующим образом:
...
"Attribute": "Class",
"TransferMode": "Delimiter",
"Delimiter": "; "
...
Тогда в ответе будут атрибуты:
- Class: Developers; New Users; HomeOffice Users.
Предположим, есть следующая структура в ActiveDirectory:
ActiveDirectory
|
|__VPN Users
| |
| |__VPN 2FA
| |
| |__Admins
| |
| |__Developers
|
|
|__New Users
|
|__HomeOffice Users
Предположим, что пользователь состоит в группах:
- Developers;
- New Users;
- HomeOffice Users.
Предположим, что конфигурация заполнена следующим образом:
...
KnownGroups:[
"VPN 2FA",
"HomeOffice Users"
]
...
Тогда в ресурс будет переданы только группы:
- VPN 2FA. Пользователь состоит в ней косвенно через подгруппу Developers;
- HomeOffice Users. Пользователь состоит в ней напрямую.
Знание про группу New Users передано не будет, потому что она не указана в конфигурации.
Примеры
"ResponseTransformConfiguration": {
"UserGroupsTransformRule": {
"Attribute": "Fortinet-Group-Name",
"TransferMode": "Multiple",
"GroupNameTemplate": "{GroupName}", // Без каких-либо преобразований
}
}
"ResponseTransformConfiguration": {
"UserGroupsTransformRule": {
"Attribute": "Class",
"TransferMode": "Multiple",
"GroupNameTemplate": "ou={GroupName}", // Developers -> ou=Developers
}
}
"ResponseTransformConfiguration": {
"UserGroupsTransformRule": {
"Attribute": "Mikrotik-Group",
"TransferMode": "Multiple",
"GroupNameTemplate": "{GroupName}", // Без каких-либо преобразований
}
}