Настройка передачи групп пользователя

Если ваш ресурс реализует авторизацию на основе групп ActiveDirectory, то при настройке двухфакторной аутентификации, авторизация перестанет работать. Ресурс будет отправлять запрос в компонент RADIUS-адаптера вместо Active Directory.

Для корректной работы необходимо настроить правила передачи групп пользователей.

В конфигурационный файл appsettings.json добавьте ResponseTransformConfiguration. В блоке UserGroupsTransformRule укажите настройки:

ResponseTransformConfiguration
"ResponseTransformConfiguration": {
  "UserGroupsTransformRule": {
    "Attribute": "Fortinet-Group-Name",
    "TransferMode": "Delimiter",
    "Delimiter": "; ",
    "GroupNameTemplate": "{GroupName}",
    "KnownGroups": [
      "Developers",
      "HomeOffice"
    ]
  }
}

Имя параметра Значение параметра
Attribute Имя атрибута, в котором передаются группы пользователя
TransferMode Способ передачи атрибута:
  • "Multiple" — передает атрибут несколько раз, каждый раз по одной группе;
  • "Delimiter" — передает атрибут один раз, группы записаны в строку через разделитель
Delimiter Разделитель. Активен, если TransferMode имеет значение Delimiter
GroupNameTemplate

Шаблон для преобразования названия группы. Должен содержать подстроку "{GroupName}" или "ou={GroupName}" в зависимости от ресурса. Подстрока шаблона автоматически будет заменена на оригинальное название группы.

Например, пользователь состоит в группе Developers. Для шаблона "ou={GroupName}" строка будет заменена на "ou=Developers"

KnownGroups Список групп пользователей для передачи. Если группы нет в списке, то она не передается. Если параметр KnownGroups не указан, то передаются все группы

Пояснения

Attribute

Для некоторых ресурсов группы должны пересылаться в атрибутах. В этом случае знание об атрибутах у 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

TransferMode

Пользователь состоит в группах:

  • 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.

KnownGroup

Предположим, есть следующая структура в 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 передано не будет, потому что она не указана в конфигурации.

Примеры

Fortinet
"ResponseTransformConfiguration": {
        "UserGroupsTransformRule": {
            "Attribute": "Fortinet-Group-Name",
            "TransferMode": "Multiple",
            "GroupNameTemplate": "{GroupName}", // Без каких-либо преобразований
    }
}

Cisco
"ResponseTransformConfiguration": {
        "UserGroupsTransformRule": {
            "Attribute": "Class",
            "TransferMode": "Multiple",
            "GroupNameTemplate": "ou={GroupName}", // Developers -> ou=Developers
    }
}

Mikrotik
"ResponseTransformConfiguration": {
        "UserGroupsTransformRule": {
            "Attribute": "Mikrotik-Group",
            "TransferMode": "Multiple",
            "GroupNameTemplate": "{GroupName}", // Без каких-либо преобразований
    }
}

После внесения изменений в файл appsettings.json перезапустите службу RADIUS.


Двухфакторная аутентификация на ваши ресурсы

Протестируй функциональность бесплатно в течении 2х недель

База знаний