Я читал о oAuth, API REST Амазонки, HTTP Basic/Digest и т.д., но не могу получить все это в "единую деталь". Вероятно, это самая близкая ситуация - Создание API для мобильных приложений - Аутентификация и авторизация
Я хотел бы создать веб-сайт, ориентированный на API. Поэтому (в начале) у меня был бы API в центре, а веб-сайт (PHP + MySQL) подключался через cURL, Android и iPhone через свои сетевые интерфейсы. Итак, 3 основных клиента - 3 ключа API. И любой другой разработчик может также развиваться через интерфейс API, и они получат свой собственный ключ API. Действия API будут приняты/отклонены на основе состояния userLevel, если я администратор, я могу удалить что-либо и т.д., Все остальные могут манипулировать только их локальными (учетными) данными.
Во-первых, авторизация - следует использовать oAuth + xAuth или мою реализацию своего рода (см. http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/RESTAuthentication.html?r=9197)? Насколько я понимаю, на сервисе Amazon пользователь == API (имеет ключ API). В моем сервисе мне нужно отделить стандартных пользователей/учетную запись (зарегистрированную на веб-сайте) и учетных записей разработчиков (у кого должен быть ключ API).
Поэтому мне сначала нужно разрешить ключ API, а затем аутентифицировать пользователя. Если я использую схему Amazon для проверки ключей API разработчика (авторизуйте их приложение), какую sheme следует использовать для аутентификации пользователя?
Я прочитал о получении токена через api.example.org/auth
после (через HTTPS, HTTP Basic) размещение моего имени пользователя и пароля, а затем переслать его при каждом следующем запросе. Как управлять токенами, если я зарегистрирован одновременно на Android и веб-сайте? Как насчет man-in-the-middle-attack, если я использую SSL только при первом запросе (когда имя пользователя и пароль передаются) и просто HTTP на всех остальных? Разве это не проблема в этом примере Пароль, защищающий службу REST?