Я создаю RESTful API для проекта, над которым я работаю, и хотел бы, чтобы основное приложение потребляло API, потому что:
- Это приведет к тому, что один набор кода будет поддерживать
- Если мы решим разоблачить API для сторонних разработчиков, это уже будет сделано
- Это открывает возможность сделать мобильные приложения, которые его потребляют.
- Я действительно хочу узнать, как это сделать.
API будет размещен на субдомене https://api.example.com
, а основное веб-приложение будет размещено в корневом домене https://example.com
.
Концептуально я понимаю, как все работает, но мой главный вопрос заключается в том, как поток аутентификации изменится, если вообще. Обычно сторонние приложения:
- Получить токен запроса из
https://api.example.com/request_token
- Перенаправить пользователя для аутентификации на
https://api.authenticate.com/authorize
- Получить перенаправление обратно в стороннее приложение
- Получить токен доступа из
https://api.example.com/access_token
Поскольку я контролирую оба домена, могу ли я сделать что-то похожее на:
- Получить токен запроса, когда пользователь приземляется на экране входа в систему
https://www.example.com
- Пользователь аутентифицируется с использованием формы на
https://www.example.com
, которая вызывает тот же код, что иhttps://api.example.com/authorize
- Если учетные данные действительны, токен запроса заменяется на токен доступа
- Маркер доступа сохраняется в сеансе и истекает, когда пользователь выходит из него, как обычно,
Шаг 3 чувствует себя неправильно, так как будет дублированный код, но разве он не откроет меня для атак XSS, это форма входа в систему на https://www.example.com
отправила данные в https://api.example.com
, так как они являются технически разными доменами?
Неужели я слишком сильно себя чувствую?