Какие таблицы необходимы для хранения данных сервера OAuth (не клиента)

#php #mysql #oauth

#php #mysql #oauth

Вопрос:

В настоящее время я изучаю OAuth. Я возился с этой библиотекой OAuth, в частности, с версией PHP.

Это просто, но достаточно, чтобы я понял основную идею. Теперь мое обучение переходит к хранению данных в базе данных. Несколько вещей, которые, я думаю, я уже знаю:

  • Мне нужно создать таблицу, в которой хранятся ключ пользователя для конкретного приложения и секрет пользователя
  • Мне нужно создать таблицу, в которой хранятся ключ токена доступа пользователя и секрет, специфичный для приложения (сгенерированная дата, чтобы в следующий раз, когда мне нужно будет реализовать истечение срока действия токена, я мог его использовать)

Теперь введите вопросы:

  • нужна ли мне другая таблица? или этих двух достаточно?

Комментарии:

1. Если вы хотите, чтобы это «просто работало», я предлагаю библиотеку oauth-php. Он имеет несколько модулей хранения (несколько баз данных и сеансов). Модуль MySQL включает в себя SQL-файл с необходимыми таблицами.

2. Я не хочу «просто работать», я хочу сделать это сам, чтобы знать внутренние процессы. Я нахожусь на этапе обучения. Если я использую уже созданный продукт, и когда-нибудь он выйдет из строя, я думаю, будет сложно отлаживать, если я не знаю, как это работает

Ответ №1:

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

 AppID | Public Token | Private Token | Callback URL | Additional App Data
------ -------------- --------------- -------------- --------------------
    1 | aaaaaaaaaaaa | bbbbbbbbbbbbb | http:///     | Test App #1
    2 | cccccccccccc | ddddddddddddd | http:///     | Test App #2
 

У вас уже должна быть таблица данных клиента. Итак, вам понадобится таблица, которая связывает токен клиента / токен приложения с идентификатором клиента.

 App ID | Customer ID | Public Token | Private Token
------- ------------- -------------- --------------
     1 |           1 | zzzzzzzzzzzz | yyyyyyyyyyyy 
     2 |           1 | xxxxxxxxxxxx | wwwwwwwwwwww
 

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

Комментарии:

1. как я должен отслеживать одноразовый номер и временную метку? еще одна таблица?

2. Поскольку одноразовый номер и проверка временных меток в основном выполняются в течение более коротких периодов времени, вы, вероятно, можете сохранить их в памяти.