Проблема с идентификацией пользователя, создать приложение чата без входа в систему - PullRequest
0 голосов
/ 13 июня 2019

Я хочу создать приложение чата внутри приложения без входа в систему.
Итак, пользователь общается с программой (бэкэнд), а не с другим пользователем.Итак, это чатбот.
Мой вопрос: как идентифицировать пользователя?Должен ли я просто войти в IP-адрес?Или я должен генерировать случайный идентификатор на сервере?Или мне просто сгенерировать его на клиенте?

1 Ответ

0 голосов
/ 03 июля 2019

Как я понимаю, цель идентификации пользователя состоит в том, чтобы сервер отслеживал, кто отправляет сообщение чата, и отправляет ответ соответствующему клиенту (пользователю).IP-адрес не может быть надежно использован как способ уникальной идентификации пользователя по многим причинам (это отдельная тема).Одним из примеров этого может быть следующее: небольшая компания направляет весь исходящий трафик из своей офисной сети через один маршрутизатор с одним IP-адресом.В этом случае запросы от разных сотрудников этой компании будут иметь тот же IP-адрес, что и сервер чата.Поэтому он не может различить этих пользователей.

Идея создания уникального идентификатора на сервере для каждого пользователя может работать.UUID, JWT или что-то подобное можно использовать для генерации идентификатора, когда пользователь впервые запускает чат.Этот идентификатор необходимо передать клиенту, чтобы клиенты (пользователи) могли отправлять последующие сообщения чата с использованием того же идентификатора.Таким образом, в этой модели клиент должен иметь место для хранения этого идентификатора, чтобы он мог продолжать передавать его обратно на сервер в своих сообщениях чата.Теперь проблема может возникнуть, когда клиент теряет этот идентификатор.Как мы можем оправиться от этой ситуации?Ответ будет аналогичен подходам, которые используются, когда кто-то теряет свой пароль.Существует несколько механизмов восстановления, таких как отправка ссылки сброса на доверенный адрес электронной почты или отправка ее на телефон пользователя в виде кода, или создание ключа восстановления, отличного от идентификатора, и отправка его по электронной почте пользователю, который впоследствии можно использовать для сбросаID.По сути, должен быть альтернативный и безопасный способ (поток восстановления) для идентификации пользователя в случае потери идентификатора.

Если идентификатор генерируется на стороне клиента, это также может работать, если все клиенты могут генерировать идентификатор, который гарантированно будет уникальным.Клиенты могут передать сгенерированный идентификатор на сервер, а сервер может проверить, используется ли он уже, и отправить клиенту сообщение о повторной попытке, если обнаружит, что оно уже используется.Или, если клиенты используют какое-то оборудование, которое имеет уникальный серийный номер, и этот серийный номер можно использовать для генерации идентификатора.

В любом случае все запросы должны передавать идентификатор на сервер, чтобы сервер могсделайте идентификацию.

Надеюсь, это поможет!

...