Передача групп пользователя в ответе ресурсу

Если на вашем ресурсе уже реализована авторизация на основе групп ActiveDirectory, она может сломаться, потому что ресурс теперь будет обращаться не в ActiveDirectory, а в компонент RadiusProxy. Чтобы доставить знание о группах пользователя до ресурса, настройте RadiusProxy.

Как настроить

  1. В корневой папке RadiusProxy откройте файл appsettings.json.
  2. Перейдите к блоку ResponseTransformConfiguration.UserGroupsTransformRule и добавьте поля (подробнее см. Примеры):
    1. Attribute — название атрибута, в котором передавать группы пользователя. Подробнее об Attribute.
    2. TransferMode — способ передачи атрибута. Допустимые значения: Multiple | Delimiter. Подробнее о TransferMode.
      Multiple — в случае нескольких групп передает атрибут несколько раз, каждый раз по одной группе.
      Delimiter — в случае нескольких группа передает атрибут один раз, все группы записаны в одну строку через разделитель.
    3. Delimiter — разделитель, через который будут записаны группы, если TransferMode = Delimiter. Подробнее о TransferMode.
    4. GroupNameTemplate — шаблон для преобразования названия группы. Всегда должен содержать подстроку "{GroupName}". Подстрока "{GroupName}" будет заменена на оригинальное название группы.
    5. KnownGroups — массив строк, который отвечает за то, какие группы (если пользователь в них состоит) стоит передавать в атрибутах. Если массив пустой или параметр не представлен вообще, то передаются все группы пользователя с учётом вложенности. Подробнее о KnownGroups.

Пояснения

Attribute

Редко, но некоторые ресурсы могут требовать, чтобы группы пересылались в атрибутах, которые RadiusProxy может не знать. Список известных атрибутов находится в корневой папке «RadiusProxy» → «Content» → «radius.Dictionary». Этот файл можно открыть в любом текстовом редакторе. Поиском можно найти нужный атрибут.

Если его нет, добавьте его. Для этого допишите строку вида:

VendorSpecificAttribute Vendor-Id Vendor-Type VendorAttributeName string

Где:

  • VendorSpecificAttribute — константа;
  • Vendor-Id — идентификатор вендора в словарях Radius.
  • Vendor-Type — идентификатор (тип) атрибута вендора.
  • VendorAttributeName — название атрибута.
  • string - тип данных атрибута. 

TransferMode

Предположим, что пользователь состоит в группах:

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

KnownGroup

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

Примеры

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}", // Без каких-либо преобразований
    }
}


id

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

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