Android-приложение, которое использует веб-сервис, как аутентифицировать пользователей - PullRequest
3 голосов
/ 17 августа 2011

Я занимаюсь разработкой приложения для Android, которое использует веб-сервис, который я тоже буду разрабатывать (я думаю об использовании веб-сервиса RESTFul) .. и я хочу защитить соединение между приложением и сервером, но мне также нужно аутентифицировать пользователей ..

Моя проблема в последней части, для обеспечения безопасности соединения, я думаю, лучший способ сделать это - использовать SSL (https), я не прав?

Я не знаю, каков «лучший способ» аутентификации пользователей, чтобы убедиться, что пользователь не может использовать веб-сервис в качестве другого пользователя. У меня есть некоторые идеи, такие как использование метода authenticate (login, pass) на веб-сервисе, который возвращает токен. И для любой операции, требующей аутентификации, пользователь должен будет передать этот токен в качестве параметра. Дело в том, хороший способ сделать это? Какой самый распространенный метод используется для авторизации пользователей в такой ситуации?

Если аутентификация на основе токена - хорошая идея, как мне сгенерировать токен?

Извините за этот длинный текст ..

Любая помощь будет полезна

Спасибо

Ответы [ 2 ]

7 голосов
/ 17 августа 2011

Прежде чем идти по этому пути, убедитесь, что вы понимаете модный стандарт, такой как OAuth. Большинство потоков OAuth сосредоточены вокруг пользователя, входящего на ваш сервер через веб-браузер. Это может привести к довольно плохому пользовательскому интерфейсу мобильного приложения. Стандарт допускает альтернативы. Вот достойное введение .

Вы также можете использовать существующего поставщика удостоверений, такого как Google, Facebook, Twitter и т. Д., Вместо реализации своего собственного authN / authZ. На Android вы можете запросить токен авторизации Google, используя AccountManager . Обычно это работает, потому что пользователь должен войти в свою учетную запись Google, чтобы получить доступ к Android Market. В любом случае, это побудит пользователя предоставить авторизацию вашему приложению. После этого вы можете использовать токен Google для входа вашего пользователя в службу с помощью вашего собственного токена. По сути, логин будет вашим сервером, который будет проверять действительный токен Google (связавшись с серверами Google) и затем выдавать свой собственный токен, который будет использоваться для звонков на ваши веб-сервисы. Если вам не нравится Google, вы можете использовать Facebook SDK и т. Д.

Что касается того, что использовать для токенов ... В спецификации OAuth также есть кое-что для этого. Вы можете сделать что-нибудь простое, например, случайную строку или что-то более сложное, например, зашифрованное SAML-подтверждение .

2 голосов
/ 17 августа 2011

Вам необходимо реализовать OAuth на основе токенов, который потребует от пользователей один раз войти в систему, а затем получить постоянный доступ.

Вы можете использовать Google App Engine , который уже предоставляет вам услуги аутентификации пользователей (ваши пользователи Android, скорее всего, уже имеют учетные записи Google), но это только один из многих вариантов.

Вы также можете посмотреть Amazon Identity Access Management (IAM) , которая позволит вам управлять пользователями, имеющими доступ к вашему веб-сервису, и соответствующим образом авторизовать их.

Я думаю, что лучший способ сделать это - использовать SSL (https), я не прав?

Это предотвращает только некоторые виды злонамеренного использования, но не все. По-прежнему ничто не мешает людям получать доступ к вашей базе данных по телефону и таким образом получать учетные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...