# Кого пускать в сервис, решает правило провайдера, а не сервис - **Дата:** 2026-08-12 - **Источник:** [../../openspec/changes/archive/2026-08-12-oidc-login/design.md](../../openspec/changes/archive/2026-08-12-oidc-login/design.md), раздел «Кого пускать, решает провайдер, а не сервис» ## Решение Сервис пускает всякого, кого пропустил провайдер, и **своей проверки допуска не делает**. Кто допущен, определяет правило Authelia на этого клиента — настройка выкладки, лежащая вне репозитория. ## Почему Authelia — общий провайдер контура, а не выделенный под этот сервис: учётная запись в ней есть у всякого, кому её завели ради любого другого сервиса на том же сервере. Ревью дизайна назвало следствие прямо: механизм, приглашающий «второго человека», приглашает всех, кто уже есть у провайдера. Очевидный ответ — проверять принадлежность к названной в конфиге группе своим кодом. Владелец от него отказался: это завело бы **второе место**, где решается допуск, и решать его пришлось бы в двух местах согласованно. Цена отказа названа в источнике и повторена в модели угроз: > Правило живёт вне репозитория, в настройках выкладки, и сервис на него > полагается так же, как полагается на обратный прокси в части панели > администратора. Настроенный слишком широко клиент открывает сервис всем, у кого > есть учётная запись в общей Authelia, — и проверить это по коду нельзя. Запись заводится как **намеренный отказ от очевидного подхода**: проверку группы предложат снова, и без записанной причины она выглядит бесплатной. ## Последствия - `+` допуск решается в одном месте, а не в двух; изменение круга допущенных не требует ни правки кода, ни выкладки. - `+` сервис не читает из ответа провайдера ничего сверх нужного для заведения записи — ни групп, ни ролей. - `−` защита сервиса стала свойством настройки, лежащей в другом репозитории, и ревью её проверить не может: ни один проход не увидит, что клиент настроен слишком широко. - `−` ошибка в настройке клиента не имеет наблюдаемого признака внутри сервиса: посторонний, которого пропустила Authelia, выглядит как законный пользователь. - `−` разграничения по владельцу нет, поэтому цена ошибки в настройке — все записи и все расшифровки разом, а не одна учётная запись. Сузит это `record-ownership`.