Для Android и iPhone вы можете использовать OAuth без проблем, и пока я думаю, что это лучший способ сделать это.
Процесс для этих двух типов смартфонов такой же, как и в веб-приложениях, потому что обе ОС дают вам возможность запустить веб-браузер из вашего приложения и перенаправить пользователя к веб-провайдеру, чтобы он мог авторизовать ваш запрос (токен), и затем браузер может вернуть вашего пользователя в приложение через надлежащий URI обратного вызова. Я не реализовал oauth для мобильных телефонов, но слышал от друга, что это возможно, и что мобильный браузер может перенаправить пользователя обратно в ваше приложение с помощью специального URI, например scheme://app/parameters
.
Вот что-то для этого с Android: ссылка
Существует два варианта использования: 2-х и 3-х
2-legged - это когда вы хотите защитить свой API, чтобы его можно было вызывать только из аутентифицированных пользовательских приложений. Это популярная схема, существующая с давних пор AFAIK - потребитель подписывает каждый запрос с помощью общего ключа потребителя, а провайдер (ваш API) также подписывает запрос, чтобы проверить, совпадает ли подпись. Таким образом, вы можете определить, подходит ли использование API для этого потребителя.
Трехсторонний oauth включает конечного пользователя стороннего приложения. Это очень удобно, если вы хотите снова защитить свой API, как в двухстороннем, потому что запросы все еще подписаны, но и ваш API может быть защищен с разрешения конечного пользователя. Поставщик API выдает токен и передает его клиентскому приложению (стороннему приложению). Затем это приложение сохраняет токен локально и перенаправляет пользователя к провайдеру для авторизации токена. Когда пользователь авторизует его, провайдер отправляет его обратно в приложение потребителя, а затем потребитель может отправлять аутентифицированные (подписанные) и авторизованные (пользователем - третья сторона) запросы к вашему API.
Протокол не очень сложен, как только вы прочитаете, как он работает, и очень гибок - вы можете расширить его для своих нужд, как вам угодно. Я настоятельно рекомендую его для защиты API, особенно если для доступа к API требуется разрешение пользователя.
Это очень хороший сайт для чтения о oauth: http://hueniverse.com/oauth/
--- ДОБАВИТЬ ВКЛ ---
Есть некоторые последствия для безопасности в отношении общего хранилища ключей в приложении для пользователя - приложении для мобильного телефона в вашем случае.
Если кто-то откроет вашу программу, разберет код и извлечет общий ключ, тогда он может создать приложение, которое будет успешно аутентифицироваться в API провайдера. Однако, это не очень большая проблема, если требуется авторизация пользователя (3-х сторонняя), потому что пользователю все равно будет предложено дать разрешение этому ложному приложению - и теперь пользователь должен сделать правильный выбор. И кроме того - ложное приложение не сможет украсть учетные данные пользователя, потому что с oauth учетные данные пользователя вводятся только на сайте провайдера.