Думаю, я знаю ответ на этот вопрос, но хотел подтвердить, что это ожидаемое поведение, а не какая-либо ошибка (полагаю, это ожидаемо).
Краткая версия: наш сайт использует SSO. Основной веб-сайт управляет регистрацией и авторизует учетную запись в Discourse через SSO. Мы убедились, что передаем IP-адрес пользователя в нашей настройке, и можем это подтвердить, просмотрев страницу администратора каждого пользователя. Однако, когда мы добавляем IP-адрес в список заблокированных в разделе «Фильтрируемые IP-адреса», это не блокирует будущие попытки создания или авторизации учетной записи.
Мое предположение: SSO обходит эту проверку. Правильно ли я понимаю, и является ли это ожидаемым результатом?
Предыстория:
Причина моего вопроса в том, что наша команда модерации сейчас выполняет дополнительную работу, добавляя IP-адреса в список заблокированных для учетных записей, которые крайне деструктивны или нарушают правила, и заметили, что это, похоже, не имеет эффекта. Поэтому они хотят, чтобы я выяснил, нужно ли им продолжать выполнять эти шаги или можно их игнорировать (на случай, если список фильтрируемых IP-адресов не имеет смысла для настроек SSO).
Если SSO контролирует вход на ваш сайт, то Discourse не может и не контролирует его. Я почти уверен, что нет смысла блокировать IP-адреса на стороне Discourse, поскольку вход контролирует другой сервер.
Я только что протестировал это на своем собственном сайте. После добавления моего IP-адреса в список «Фильтрируемые IP-адреса» и установки действия «Блокировать» пользователи не могут создавать новые учетные записи с этого IP-адреса при входе через SSO. Это сделано намеренно. Вы можете увидеть, где это происходит в коде, здесь: discourse/app/controllers/session_controller.rb at main · discourse/discourse · GitHub.
Интересно… у нас точно есть недавняя учётная запись, IP-адрес регистрации которой был заблокирован 20 августа, но пользователь успешно создал аккаунт 15 сентября.
Редактировано:
Но затем я также нашёл это в логах, так что, похоже, это работает иногда?
А, я думаю, понимаю, что происходит. У нас есть пользовательское поле SSO с названием «IP-адрес регистрации», и в нём явно указан заблокированный IP-адрес, но последний IP-адрес, отображаемый в Discourse, отличается. Это лишь моё предположение, которое может объяснять использование VPN, но почему в поле регистрации оказался заблокированный адрес, а в Discourse — другой, мне неизвестно.