#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. Поскольку одноразовый номер и проверка временных меток в основном выполняются в течение более коротких периодов времени, вы, вероятно, можете сохранить их в памяти.