У меня возник вопрос относительно того, как я должен использовать архитектуру REST API с использованием ключей доступа и ключей API.Ключи API для архитектуры и токены доступа
У меня есть API, который нуждается в аутентификации. Я хочу, чтобы включить два случая использования:
регистрации пользователя в интерфейсе с помощью oauth2 (грант пароля), и предоставляется маркер временного доступа. Этот токен используется для аутентификации пользователя. Поэтому пользовательский интерфейс, который сам использует API, может извлекать данные и отображать их.
Я также хочу, чтобы у пользователя был ключ API для выполнения одних и тех же вызовов, но в его приложении. Очевидно, что, вопреки токену доступа, я хочу, чтобы ключ API был долговечным. Кроме того, вопреки токена доступа, привязанного к данному пользователю (если мы вводим командный механизм, каждый пользователь будет иметь различный токен доступа, хотя они имеют доступ к тем же ресурсам), ключ API должен быть уникальным для проекта.
В то же время, я не уверен, как это сделать. Я думаю, что внутри, как ключи API, так и токены доступа должны храниться в одной таблице, но ключи API не имеют времени истечения. Я прав?
Одна вещь, которую я не уверен, также является концепцией клиента. Похоже, что в спецификации клиент больше похож на внешнее приложение. Однако могу ли я использовать эту концепцию здесь?
Например, каждый «проект» на самом деле является другим клиентом (хотя клиент здесь - это одно и то же приложение, а не приложение, созданное сторонним разработчиком).
Поэтому, если пользователь A создает учетную запись в системе, клиент A будет автоматически создан с токеном доступа, привязанным к клиенту A, с долгоживущим токеном доступа (aka API key). Например, это можно использовать для выполнения вызовов API непосредственно на его код.
Затем, если пользователь A войдет в панель управления, будет создан токен доступа, но на этот раз без приложения, но привязанного к пользователю, с коротким сроком службы.
Звучит это здорово? Кто-нибудь уже реализовал такую вещь?
Спасибо!
Ключи API и токены доступа - это разные концепции, моделируйте их отдельно и храните их отдельно. –
Да, но как вы справляетесь с тем, что я хочу получить доступ к API в однородном виде? Я не хочу иметь разные способы использования API. Независимо от того, использует ли мое веб-приложение его использование временного токена или клиента, использующего API непосредственно с его веб-сервера с помощью ключа API. –