Вопросы об использовании вашего собственного API с помощью OAuth

Я создаю RESTful API для проекта, над которым я работаю, и я бы хотел, чтобы основное приложение использовало API, потому что:

  1. Это приведет к получению одного набора кода для поддержки
  2. Если мы решим предоставить API для сторонних разработчиков, это уже будет сделано
  3. Это открывает возможность создавать мобильные приложения, которые его потребляют
  4. Я действительно хочу узнать, как это сделать

API будет размещен на субдомене https://api.example.com , а основное веб-приложение будет размещено в корневом домене https://example.com .

Концептуально я понимаю, как все работает, но мой главный вопрос - как изменится поток аутентификации, если вообще изменится. Обычно сторонние приложения:

  1. Получат токен запроса от https://api.example.com/request_token
  2. Перенаправляют пользователя для аутентификации на https://api.authenticate.com/ authorize
  3. Перенаправление обратно к стороннему приложению
  4. Получение токена доступа от https://api.example.com/access_token

Поскольку я контролирую оба домена, могу ли я сделать что-то подобное:

  1. Получите токен запроса, когда пользователь перейдет на экран входа по адресу https://www.example.com
  2. Пользователь аутентифицируется с помощью формы на https://www.example.com , который вызывает тот же код, что и https: //api.example.com / authorize
  3. Если учетные данные действительны, токен запроса заменяется токеном доступа
  4. Токен доступа сохраняется в сеансе и истекает, когда пользователь выходит из системы, как обычно

Шаг 3 выглядит так, как будто неправильно, так как будет дублированный код, но разве это не откроет меня для XSS-атак? Это форма входа на https://www.example.com отправила данные на https: // api.example.com , поскольку они являются технически разными доменами?

Я слишком усложняю это?

28
задан Steve 16 December 2011 в 04:38
поделиться