# Подтверждение правильной комбинации User+Pass через API?

**URL:** https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128
**Category:** Support
**Created:** [23.Сентябрь.2020 19:03:29 UTC](https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128 "2020-09-23T19:03:29Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Richie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/richie/32/115110_2.png) [@Richie](https://meta.discourse.org/u/Richie)
#### Post date: [23.Сентябрь.2020 19:03:29 UTC](https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128/1 "2020-09-23T19:03:29Z")

</div>

Всем привет,

Мне нужна ваша помощь в том, как реализовать вход пользователей на удалённый веб-сайт, используя их существующие учётные данные Discourse (логин и пароль).

Думаю, мне не нужен SSO. Вот почему.

Сначала немного контекста о моём текущем сценарии использования и о том, почему он меня не устраивает.

У меня сейчас есть сайт по адресу [https://www.example.com](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](https://www.example.com).

Я создал это три-четыре года назад, и оно до сих пор отлично работает.

Но…

1. Пользователям **очень** непонятно вводить комбинацию «имя пользователя + email» в форме входа  
– Большинство людей всегда вводят «имя пользователя + пароль»  
– Несмотря на огромные инструкции по всей форме, люди всё равно по привычке делают это неправильно

2. Это небезопасно  
– Достаточно знать имя пользователя и его email, и, имея эти два (тривиальных) фрагмента информации, можно войти на [https://www.example.com](https://www.example.com) «за этого пользователя» с минимальными усилиями

Что я хочу сделать: чтобы пользователь нажал кнопку «Войти» на [https://www.example.com](https://www.example.com) и ввёл свои существующие учётные данные Discourse (имя пользователя + пароль, а не имя пользователя + email!).

Затем мой сайт на [example.com](http://example.com) отправит быстрый API-запрос на мой Discourse, подтвердит, что введённая комбинация имя пользователя + пароль верна, и вернёт существующий ID пользователя в Discourse.

Надеюсь, я объясняюсь понятно 😬

Я проштудировал всю документацию по API, но никак не могу найти простой конечный пункт «login»? 🤔

Мне не нужно и не хочется входить или выходить из самого Discourse, мне просто нужно подтвердить, что имя пользователя и пароль верны.

Любые подсказки, советы, ссылки или рекомендации будут очень кстати 😊

---

<div class="post-metadata">

### Author: ![simon](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/simon/32/339122_2.png) [@simon](https://meta.discourse.org/u/simon)
#### Post date: [24.Сентябрь.2020 00:21:25 UTC](https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128/2 "2020-09-24T00:21:25Z")

</div>

> [@Richie](#):
>
> Мне не нужно и не хочется входить или выходить из самого Discourse; мне просто нужно убедиться, что логин и пароль пользователя верны.

Не существует API-маршрута, который возвращал бы сырой пароль пользователя, поэтому, думаю, этот подход не сработает. Судя по вашему описанию, вы хотите использовать Discourse в качестве провайдера SSO для своего веб-сайта. Это можно реализовать. Подробная информация о настройке находится здесь: [Use Discourse as an identity provider (SSO, DiscourseConnect)](https://meta.discourse.org/t/using-discourse-as-a-sso-provider/32974).

---

<div class="post-metadata">

### Author: ![Richie](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/richie/32/115110_2.png) [@Richie](https://meta.discourse.org/u/Richie)
#### Post date: [24.Сентябрь.2020 08:34:21 UTC](https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128/3 "2020-09-24T08:34:21Z")

</div>

Спасибо @simon — беглый взгляд на эту ссылку подсказывает, что это может быть _именно_ то, что мне нужно.

Приступаю к чтению 🤓

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [24.Октябрь.2020 08:45:39 UTC](https://meta.discourse.org/t/confirming-a-correct-user-pass-combination-via-api/165128/4 "2020-10-24T08:45:39Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
