Да. Если SAML работает, вы можете отключить локальный вход. Я думаю, что это также отключит вход по электронной почте, поэтому вам не нужно делать это отдельно.
Да, я знаю эту опцию, но она глобальная, а мне нужна настройка для каждого пользователя отдельно. Половина моих пользователей — внутренние, половина — внешние. Внешние пользователи могут использовать только локальный вход, а внутренние обязаны использовать SAML. Здесь я хотел бы убрать (или отключить) возможность локального входа.
Как это будет работать? Если они не вошли в систему, как это может быть опцией для каждого пользователя?
Предположительно, можно создать плагин, который будет отказывать в входе, если пользователь состоит в определённой группе и не использовал SAML. Думаю, это займёт от 2 до 4 часов работы? Возможно, больше с учётом полноценной спецификации. Но я пока не изучал вопрос. Если у вас есть бюджет, можно спросить в Marketplace.
Помните, что дело не только в сборе средств для написания плагина. Вам также потребуется поддерживать его, чтобы он продолжал работать после обновлений Discourse.
Если вы не можете позволить себе это и не обладаете навыками для самостоятельной разработки, вам, возможно, придется смириться с тем, что пользователи иногда будут входить в систему локально, а не через SSO.
SAML — это центральный IDM, доступный только из внутренней (корпоративной) сети LAN, тогда как сервер Discourse является публичным.
Мы хотим, чтобы внутренние пользователи могли входить в систему только из офиса (или через VPN), но при этом они могут использовать локальный метод входа и получать доступ из любого места. Мы не можем отключить их вход через SAM/IDM (это нужно делать вручную в форуме).
Это не критично, но у нас есть политика, требующая подключаться к центральному IDM, если это возможно.
Вы можете добавить внутренних пользователей (тех, кто входит через SAML) в группу. Затем скройте раздел локального входа для этой группы с помощью JS. Также можно добавить JS-скрипт, чтобы скрывать вход через SAML для пользователей, не входящих в эту группу.
Это лишь обходное решение, но оно может быть достаточным, чтобы отговорить пользователей от использования неверного способа входа.
Однако, поскольку они не будут авторизованы, находясь на странице входа, нет способа скрыть вход через SAML от пользователей, у которых есть аккаунты SAML. Возможно, можно что-то сделать, чтобы скрыть вход через SAML от тех, кто не находится в корпоративной сети (по IP-адресу), но я не уверен, как это реализовать.
Не уверен, что это полезно, так как в любом случае это не сработает. Если адрес SSO недоступен извне, браузер не сможет получить к нему доступ через публичный интернет.
SAML — это протокол аутентификации, а не система управления идентификацией (IdM) или поставщик идентификации (IdP) — он должен получать данные из какого-то другого источника. Возможно, ваша система IdM также поддерживает SAML, но если вы не сообщите нам, какая именно это бэкенд-система, нам будет трудно помочь вам в этом вопросе.
Да, я это знаю, служба аутентификации — это внутренний ADFS. Но мой вопрос не касается ни SAML, ни ADFS, поскольку внешний вход работает отлично, мне это очень нравится.
Меня интересует, есть ли способ включить только один источник аутентификации для учётной записи и отключить все остальные, или, другими словами, отключить локальный вход для пользователей, у которых уже работает SSO.
Понимаю, что это можно реализовать только после попытки входа, но это не будет проблемой.
Вам потребуется создать плагин, который проверяет, является ли пользователь членом определённой группы, и в случае, если он входит в группу must_use_saml, но не вошёл через SAML, автоматически завершает его сеанс.
Для разработчика, знакомого с подобными задачами, это займёт примерно один-два часа, в зависимости от объёма необходимого тестирования и необходимости написания спецификаций.