Я строю RESTful API для проекта, я работаю, и я хотел бы сделать главное приложение потреблять API, потому что:Вопросы о Потребляя свой собственный API с OAuth
- Это приведет к в том, один набор кода для поддержания
- Если мы решили выставить API для 3-сторонних разработчиков это уже будет сделано
- это открывает возможность сделать мобильные приложения, которые потребляют его
- я действительно хочу, чтобы узнать как это сделать
API будет размещен на субдомене https://api.example.com
, а основное веб-приложение будет размещено в корневом домене https://example.com
.
Концептуально я понимаю, как все работает, но мой главный вопрос заключается в том, как поток аутентификации изменится, если вообще. Обычно 3-сторонних приложений будет:
- Получить маркер запроса от
https://api.example.com/request_token
- переадресовать пользователя для аутентификации на
https://api.authenticate.com/authorize
- Получить перенаправлены обратно в приложение 3 партии
- Получить маркер доступа от
https://api.example.com/access_token
Поскольку я контролирую оба домена, могу ли я сделать что-то похожее на:
- Получить маркер запроса, когда Если учетные данные действительны, маркер запроса местами земли пользователя на экране входа в
https://www.example.com
- Пользователь проверяет подлинность, используя форму на
https://www.example.com
, что вызывает тот же код, какhttps://api.example.com/authorize
- для маркеров доступа маркера
- доступа сохраняется в сессии, и истекает, когда пользователь выходит из системы, как это обычно бы
Шага 3 чувствует, что это неправильно, так как там будет duplica te, но разве это не откроет меня до атак XSS, это форма входа в систему на https://www.example.com
отправила данные на https://api.example.com
, так как они технически разных доменов?
Могу ли я превзойти это?
Не могли бы вы подробнее остановиться на пункте 3? Когда пользователь входит в систему, вы сохраняете идентификатор сеанса в файле cookie, а затем используете это как токен псевдодоступа при выполнении вызова API, а затем просматриваете его, когда получаете запрос API? Похоже, что это будет уязвимость безопасности ... – Steve
По существу да. Но как эта уязвимость? Я не использую OAuth при вызове API из веб-приложения. Если вы вошли в систему (как определено путем проверки cookie), тогда API-интерфейсы доступны, просто вызывая URL-адрес. Однако я забыл упомянуть, что я обслуживаю API: s для веб-приложения в том же домене. –
Я предполагаю, что пока вы не только полагаетесь на идентификатор сеанса, чтобы идентифицировать пользователя на стороне сервера, это не так. Я думал, что вы можете открыть себя до [Session Hijacking] (http://en.wikipedia.org/wiki/Session_hijacking), но в пятницу после школы вышла, и я устал. Основываясь на ваших ответах на другие вопросы, вы, безусловно, очень знающий парень! Спасибо за вашу помощь! – Steve