sbernhard
(Bernhard Suttner)
26.Апрель.2020 20:17:02
1
В предыдущих версиях отображалась целевая страница, на которой появлялась кнопка «Войти». При нажатии на эту кнопку открывалась страница входа SAML.
Лично мне такое поведение очень нравилось. В текущей версии 2.4.2 это больше невозможно, так как страница входа SAML отображается сразу.
Можно ли это настроить?
sam
(Sam Saffron)
27.Апрель.2020 01:36:48
2
Я не совсем понимаю, вы имеете в виду, что мы показали модальное окно с одной кнопкой «Войти через SAML»?
sbernhard
(Bernhard Suttner)
27.Апрель.2020 06:46:50
3
Нет.
В предыдущей версии (кажется, это была 2.3.6) всё было так:
После нажатия на кнопку «Anmelden» открывалось окно входа через SAML.
Если я включаю «локальный вход», снова появляется стартовая страница с кнопкой входа, но мне не нужен локальный вход, поэтому мне нужно его отключить.
sbernhard
(Bernhard Suttner)
29.Апрель.2020 21:21:33
4
Кто-нибудь может помочь? Может быть, @eviltrout ?
eviltrout
(Robin Ward)
29.Апрель.2020 21:26:42
5
Я точно не менял это намеренно. Если бы вы могли помочь нам отследить, когда это произошло, это было бы полезно, так как мы могли бы изучить контекст.
Возможно, это изменение было сделано по соображениям безопасности.
Falco
(Falco)
29.Апрель.2020 21:36:33
6
Это долгожданное улучшение, призванное заставить omniauth вести себя как настоящий SSO, когда количество методов входа через omniauth равно одному.
This is now implemented:
If there is only one external authenticator enabled and local logins are disabled and the site requires login, then users will be directed straight to the external authentication page. This exactly matches the implementation of our Discourse-native SSO.
I can’t think of a reason why anyone wouldn’t want this, so this is now the default behaviour.
cc @consideRatio @Joralf
sbernhard
(Bernhard Suttner)
29.Апрель.2020 21:36:49
7
Чем я могу помочь?
Одна подсказка: если вы включите «Локальный вход», будет отображена «Страница входа вместе с кнопкой входа».
david
(David Taylor)
29.Апрель.2020 21:38:10
8
Если вам действительно нужна страница подтверждения, вы можете перенаправить пользователя на /login (вместо главной страницы). Это не вызовет автоматический вход.
Однако имейте в виду, что это не поддерживается официально — это лишь особенность реализации, которая может измениться в любой момент.
Falco
(Falco)
29.Апрель.2020 21:39:02
9
Новое поведение лучше и согласуется с входом через SSO. Если сообщение необходимо до входа, его можно реализовать в провайдере идентификации.
sbernhard
(Bernhard Suttner)
29.Апрель.2020 21:42:00
10
А, хорошо знать.
Я знаю 2 причины:
показать очень приятную целевую страницу с основной информацией вместо «скучного» окна входа
«безопасность» (я знаю, это не слишком серьёзное препятствие). Дешёвые скрипты для взлома на главном URL (без целевой страницы), надеюсь, не сработают, так как сначала нужно нажать кнопку входа.
Возможно ли настроить такое поведение?
sam
(Sam Saffron)
30.Апрель.2020 02:29:00
11
Вам потребуется нанять разработчика здесь, чтобы создать плагин для изменения этого. На данный момент это первая жалоба, которую я слышал о новой системе за несколько месяцев.
sbernhard
(Bernhard Suttner)
30.Апрель.2020 06:41:47
12
Я разработчик (см. мои изменения в discourse_saml)
Примете ли вы PR, который добавляет опцию конфигурации (по умолчанию: новое поведение)?
david
(David Taylor)
30.Апрель.2020 08:48:39
14
sbernhard:
«Безопасность» (я знаю, это не совсем серьёзное препятствие). Дешёвые скрипты для взлома на основном URL (без посадочной страницы) должны, надеюсь, не сработать, так как для начала работы необходимо сначала нажать кнопку входа.
Автоматическое перенаправление не должно создавать уязвимостей безопасности. Если вы обнаружили способ эксплуатации, пожалуйста, сообщите нам через нашу программу раскрытия информации: discourse/docs/SECURITY.md at main · discourse/discourse · GitHub
Я не думаю, что нам стоит добавлять лишний шум в настройки, пока мы не получим больше запросов от пользователей на это изменение.
Вы можете переопределить это в плагине, исправив этот метод:
Так что, я думаю, вам стоит упростить функцию до следующего вида:
def redirect_to_login
dont_cache_page
cookies[:destination_url] = destination_url
redirect_to path("/login")
end
sbernhard
(Bernhard Suttner)
30.Апрель.2020 08:56:43
15
Спасибо. Очень ценно!
Кстати: Вы отлично справляетесь с Discourse.