Мы работаем над новым проектом, мы являемся двумя ведущими разработчиками и перекрещиваемся с тем, как использовать токен для обеспечения связи между сервером и клиентом:
Первое предложение:
Шаг первый) клиент запрашивает первичный токен, отправив имя пользователя и пароль и текущее время (эта переменная будет сохранена в базе данных сервера и на стороне клиента тоже) на api, сервер интерпретирует ввод и отображает хеш-маркер (например: 58f52c075aca5d3e07869598c4d66648) сохраняет его в базе данных и возвращает его клиенту.
Шаг второй) Клиент теперь сохраняет первичный токен и создает новый хеш-маркер с использованием первичного токена + переменной current_time, отправленной в запросе аутентификации (позволяет вызывать этот новый токен, main_token), и сервер делает то же самое и создает тот же токен, используя тот же алгоритм.
Шаг третий) Каждый раз, когда клиент запрашивает API-интерфейс сервера, он отправляет main_token на сервер, теперь сервер сравнивает созданный в нем токен, а main_token отправляется клиентом, если он совпадает, это означает, что пользователь реальный
Второе предложение:
Шаг первый) Клиент генерирует две случайные клавиши ($ key1 = rand (10000,90000); $ key2 = rand (10000,90000);) При каждом запросе API клиент создает хэш с использованием типа запроса и два ключа со сложным алгоритмом и отправляет эти два ключа + хэш на сервер
Шаг второй) Сервер, используя тот же алгоритм, который используется в клиенте, создает хеш, и сравнивается с тем, который был отправлен клиентом, если он совпадает, сервер продолжает обрабатывать запрос
Теперь возникает вопрос: какой из них является наиболее логичным и безопасным способом для защиты запросов api
С наилучшими пожеланиями