Авторизация в клиент-серверном приложении

Ответить
walterwest
Сообщения: 4
Зарегистрирован: 13 мар 2014, 06:28

Авторизация в клиент-серверном приложении

Сообщение walterwest » 13 мар 2014, 06:36

Подскажите пожалуйста, каким образом сделать безопасную авторизацию в приложении, на подобии как в instagram.
Т.е. есть веб сервер с БД где хранится вся информация, пользователю при первом запуске нужно ввести логин и пароль для запуска приложения, путем отправки post запроса проверяется их коректность и авторизация в случае успеха, а как лучше сделать потом, при повторном запуске и запросе данных?
Сохранить эти логин и пароль в настройках и при каждом запросе отправлять их или есть более безопасные и удобные схемы работы?

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Авторизация в клиент-серверном приложении

Сообщение altwin » 13 мар 2014, 10:48

Вам действительно нужно это? Почему не использовать oauth2 ? Варриантов ответов на этот вопрос очень много, например: http://docs.oracle.com/cd/A97335_02/app ... ecure5.htm
Изображение

Аватара пользователя
altwin
Сообщения: 1951
Зарегистрирован: 13 ноя 2013, 14:46

Re: Авторизация в клиент-серверном приложении

Сообщение altwin » 13 мар 2014, 10:56

walterwest писал(а): Сохранить эти логин и пароль в настройках и при каждом запросе отправлять их или есть более безопасные и удобные схемы работы?
Существует понятие открытого и закрытого ключа. После авторизации вам достаточно создать открытый ключ у пользователя(к примеру в виде config.xml) и на сервере установить срок жизни этого ключа. Для удовлетворения можно позволить серверу генерировать открытый ключ с определенной переодичностью и перезаписывать config.xml, пользователь ничего не должен знать об этом и тем более думать.
Основной принцип тут -максимум надежности при минимальных телодвижениях пользователя. Т.е. он просто придумал пароль, все остальные генерации открытых/закрытых ключей делает сервер. Пароль дает только доступ к закрытому ключю на сервере и только определенному пользователю, работа с приложением возможна только через открытый ключ. Само по себе налицие закрытого ключа на сервере, означает отсутсвие необходимости авторизации. Вам нужно лишь спрашивать пароль в случае сброса сессии.
Изображение

Ответить