Всем привет,
Мне нужна ваша помощь в том, как реализовать вход пользователей на удалённый веб-сайт, используя их существующие учётные данные Discourse (логин и пароль).
Думаю, мне не нужен SSO. Вот почему.
Сначала немного контекста о моём текущем сценарии использования и о том, почему он меня не устраивает.
У меня сейчас есть сайт по адресу https://www.example.com, на котором есть кнопка «Войти».
Когда пользователь нажимает эту кнопку, его просят ввести существующее имя пользователя Discourse и адрес электронной почты (обратите внимание: имя пользователя + email, а НЕ пароль).
Затем я беру эти два фрагмента данных и отправляю API-запрос GET по адресу:
"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail
В заголовках этого API-вызова я указываю имя учётной записи пользователя «system» и соответствующий API-ключ для этого пользователя.
Если совпадение по адресу электронной почты найдено, я сравниваю имя пользователя, которое пользователь ввёл в моей форме, с именем пользователя, возвращённым в ответе API для указанного email.
Если они совпадают, я считаю, что пользователь вошёл в систему на моём сайте https://www.example.com.
Я создал это три-четыре года назад, и оно до сих пор отлично работает.
Но…
-
Пользователям очень непонятно вводить комбинацию «имя пользователя + email» в форме входа
– Большинство людей всегда вводят «имя пользователя + пароль»
– Несмотря на огромные инструкции по всей форме, люди всё равно по привычке делают это неправильно -
Это небезопасно
– Достаточно знать имя пользователя и его email, и, имея эти два (тривиальных) фрагмента информации, можно войти на https://www.example.com «за этого пользователя» с минимальными усилиями
Что я хочу сделать: чтобы пользователь нажал кнопку «Войти» на https://www.example.com и ввёл свои существующие учётные данные Discourse (имя пользователя + пароль, а не имя пользователя + email!).
Затем мой сайт на example.com отправит быстрый API-запрос на мой Discourse, подтвердит, что введённая комбинация имя пользователя + пароль верна, и вернёт существующий ID пользователя в Discourse.
Надеюсь, я объясняюсь понятно ![]()
Я проштудировал всю документацию по API, но никак не могу найти простой конечный пункт «login»? ![]()
Мне не нужно и не хочется входить или выходить из самого Discourse, мне просто нужно подтвердить, что имя пользователя и пароль верны.
Любые подсказки, советы, ссылки или рекомендации будут очень кстати ![]()