Настройка передачи групп пользователя
Если ваш ресурс реализует авторизацию на основе групп ActiveDirectory, то при настройке двухфакторной аутентификации, авторизация перестанет работать. Ресурс будет отправлять запрос в компонент RADIUS-адаптера вместо Active Directory.
Для корректной работы необходимо настроить правила передачи групп пользователей.
В конфигурационный файл appsettings.json добавьте ResponseTransformConfiguration. В блоке UserGroupsTransformRule укажите настройки:
"ResponseTransformConfiguration": {
"UserGroupsTransformRule": {
"Attribute": "Fortinet-Group-Name",
"TransferMode": "Delimiter",
"Delimiter": "; ",
"GroupNameTemplate": "{GroupName}",
"KnownGroups": [
"Developers",
"HomeOffice"
]
}
}
Имя параметра | Значение параметра |
---|---|
Attribute | Имя атрибута, в котором передаются группы пользователя |
TransferMode | Способ передачи атрибута:
|
Delimiter | Разделитель. Активен, если TransferMode имеет значение Delimiter |
GroupNameTemplate |
Шаблон для преобразования названия группы. Должен содержать подстроку "{GroupName}" или "ou={GroupName}" в зависимости от ресурса. Подстрока шаблона автоматически будет заменена на оригинальное название группы. Например, пользователь состоит в группе Developers. Для шаблона "ou={GroupName}" строка будет заменена на "ou=Developers" |
KnownGroups | Список групп пользователей для передачи. Если группы нет в списке, то она не передается. Если параметр KnownGroups не указан, то передаются все группы |
Пояснения
Для некоторых ресурсов группы должны пересылаться в атрибутах. В этом случае знание об атрибутах у RADIUS-адаптера нет. Список известных атрибутов находится в файле «radius.Dictionary» в папке «RadiusProxy» → «Content».
Чтобы найти нужный атрибут, откройте файл «radius.Dictionary» в любом текстовом редакторе.
Если атрибута нет, добавьте его. Для этого в файле допишите строку вида:
VendorSpecificAttribute Vendor-Id Vendor-Type VendorAttributeName string
Где:
- VendorSpecificAttribute — константа.
- Vendor-Id — идентификатор вендора в словарях RADIUS.
- Vendor-Type — идентификатор (тип) атрибута вендора.
- VendorAttributeName — название атрибута.
- string — тип данных атрибута.
VendorSpecificAttribute 12356 1 Fortinet-Group-Name string
Пользователь состоит в группах:
- Developers;
- New Users;
- HomeOffice Users.
Multiple
В appsettings.json в блоке UserGroupsTransformRule конфигурация настроена следующим образом:
...
"Attribute": "Class",
"TransferMode": "Multiple",
...
Атрибуты в ответе:
- Class: Developers;
- Class: New Users;
- Class: HomeOffice Users.
Delimiter
В appsettings.json в блоке UserGroupsTransformRule конфигурация настроена следующим образом:
...
"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.
В appsettings.json в блоке UserGroupsTransformRule конфигурация настроена следующим образом:
...
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}", // Без каких-либо преобразований
}
}
После внесения изменений в файл appsettings.json
перезапустите службу RADIUS.