Содержит ли пакет ответа RADIUS атрибуты, отправленные в пакете запроса?

Я работаю с сервером RADIUS (исходного кода которого у меня нет), чей ответ на запрос аутентификации RADIUS также содержит атрибуты, отправленные с запросом.

Однако я просматривал исходный код tinyradius, и, похоже, он не копирует все атрибуты из пакета запроса при создании пакета ответа. Он копирует только атрибут номер 33 (атрибут STATE), если он существует.

RadiusClients, похоже, принимает любой ответ. Что делать правильно?


person user93353    schedule 06.09.2016    source источник


Ответы (1)


Нет, ответы RADIUS не должны содержать все атрибуты запроса.

Состояние является особенным, его можно использовать для связывания нескольких раундов запросов/ответов вместе.

Двумя основными вариантами использования состояния являются аутентификация OTP, при которой пароль и код OTP отправляются в течение двух или более циклов, или аутентификация EAP, которая также выполняется в течение нескольких раундов.

NAS                     RADIUS
---                     ------
# Password round
Access-Request      ->
                    <-  Access-Challenge
                        [Generates random state 0x01]
# OTP round
Access-Request
[Copies state 0x01] ->
                        Access-Accept/Reject

Без атрибута состояния невозможно связать Access-Challenge и последующий Access-Request вместе.

Примечание. Не указано, что делать с состоянием, оно просто используется для связывания пакетов. В FreeRADIUS мы поддерживаем список атрибутов «состояния сеанса», которые доступны для политик на всех этапах многоэтапной попытки аутентификации.

person Arran Cudbard-Bell    schedule 06.09.2016
comment
Спасибо. Похоже, я ошибся - это не атрибуты. Однако за первыми 20 байтами (т.е. за пределами аутентификатора) я вижу 12 12, за которыми следует успешный вход в систему. Любое представление о том, что представляют собой эти 2 12, и является ли обязательной строка «Успешный вход в систему» - person user93353; 06.09.2016
comment
Я думаю, что первое 0x12 — это тип атрибута Reply-Message, а второе 0x12 — это длина атрибута 18 (я предполагаю, что длина включает в себя длину поля типа атрибута, поле длины и само значение) - person user93353; 06.09.2016
comment
Да, это точно :) Таким образом, ваша максимальная длина строки на самом деле составляет 253 байта, потому что она включает в себя тип и длину. - person Arran Cudbard-Bell; 06.09.2016