Я разработал безстоящий API на сервере api.com. Для некоторых конечных точек API требуется аутентификация.
У меня есть веб-сайт на отдельном сервере на веб-сайте. Когда пользователь проходит аутентификацию с веб-сайта, серверу веб-сайта необходимо получить некоторые данные из конечной точки API, требующей аутентификации (например, /tweets
). Эти данные будут использоваться в ответе сервера (например, для рендеринга твитов).
Ответ сервера также загрузит некоторый JavaScript в браузере, который впоследствии должен будет получить (через XMLHttpRequests (XHR)) некоторые данные из конечной точки API, требующие аутентификации (/tweets
, например).
Эта архитектура представляет собой изоморфное веб-приложение. Сервер запрашивает всю страницу по запросу, а затем клиент обрабатывает действия пользователя с помощью JavaScript.
-
На базовом уровне я мог бы использовать базовую аутентификацию HTTP для веб-сайтов и api.com. Тем не менее, браузер предложит пользователю ввести свои учетные данные при первом входе на сайт .com и повторно, когда клиент сделает XHR конечной точке, требующей аутентификации.
Я хочу, чтобы пользователь заходил на свои учетные данные один раз на веб-сайте.. Это похоже на текущий сайт Twitter. После входа в twitter.com сервер веб-сайта идентифицирует вас как аутентифицированный и отвечает на HTML-страницу, содержащую загрузки JavaScript. Приложение JavaScript затем (предположительно) делает аутентифицированные XHR для API без имени пользователя.
API - это отдельный сервер по дизайну. В конце концов API может быть открыт для третьих сторон, хотя это не является первоначальным требованием.
Как я могу это достичь? Я ищу:
- простейшее безопасное решение
- решение, использующее OAuth (если применимо)
Оба будут здорово!