Механизм аутентификации для Java-клиента игры / MySQL DB - PullRequest
3 голосов
/ 18 января 2012

Мне нужно выяснить, как лучше всего аутентифицировать пользователей, которые подключаются из игрового клиента C ++, к базе данных mySQL на другом сервере, и я планирую написать веб-сервис Java для этого.

БезопасностьВ первую очередь мне нужно убедиться, что данные, передаваемые по проводам, зашифрованы, поэтому я буду использовать SSL (изначально я думал о шифровании на уровне сообщений с помощью ws-security, однако я думаю, что это слишком много накладных расходов).

Что мне действительно нужно выяснить, так это какой механизм аутентификации я должен предоставить.Эти пользователи будут предоставлять имена пользователей и пароли, а также отправлять веб-запросы к службе.

Я не решил, должна ли служба быть традиционной веб-службой SOAP или RESTful.Основная идея остальных заключается в том, чтобы сделать сервер без сохранения состояния, и, поскольку клиент в основном будет устанавливать сеанс со службой, я не вижу смысла в использовании REST здесь.

Сказав все это, чтоМне действительно нужно выяснить, как именно выполнить рукопожатие и как сохранить сеанс.

Существуют ли какие-либо популярные фреймворки, которые предоставляют API для этого в отношении базы данных mySQL?

Снова клиент предложит UN / PW серверу, который должен расшифровать их (SSL должен позаботиться об этом), аутентифицировать их по информации учетной записи, хранящейся в базе данных mysql, а затем вернуть некоторый хэш или что-то подобноетак что сеанс пользователя может сохраняться, или пользователю больше не нужно входить в систему, чтобы выдавать дополнительные запросы.

Может ли кто-нибудь порекомендовать мне фреймворк / какой-нибудь материал для чтения, чтобы я мог на него взглянуть?

Ответы [ 3 ]

1 голос
/ 18 января 2012

Я бы посмотрел на oauth:

http://developers.sun.com/identity/reference/techart/restwebservices.html

Хорошо известная модель: 1. войдите и получите oauth-токен 2. хранить токен в db с внутренним идентификатором пользователя (и любыми другими данными, такими как время истечения токена, которые вы хотите сохранить) 3. отправить токен клиенту, клиент сохраняет токен 4. клиент отправляет токен для всех будущих запросов 5. сервер извлекает информацию пользователя из токена

Этот метод должен хорошо работать с любым клиентским языком и любым внутренним хранилищем данных.

1 голос
/ 18 января 2012

Делайте вещи максимально простыми.

HTTP уже не имеет состояния, и идея входа в систему с последующим продолжением сеанса хорошо известна (cookie сеанса). Используйте эту парадигму, и у вас не будет никаких проблем.

Вы также получаете преимущества очень легкого и открытого протокола связи и множества хороших библиотек для легкой сериализации / десериализации обычных полезных нагрузок REST, таких как JSON или XML.

REST также означает, что вы можете довольно легко использовать один и тот же сервер с другими клиентами.

0 голосов
/ 18 января 2012

Я бы порекомендовал использовать REST. В качестве инфраструктуры авторизации вы можете использовать стандартные контейнеры jdbc или файловые области в JAAS. Если пара логин / пароль прошла успешно, сохраните их на стороне клиента. После этого вы можете выполнять запросы с предоставленными учетными данными для каждого запроса. Я использовал клиент Джерси для этого. Для [de] сериализации из / в XML / json XStream library "do all dat math". Хорошего дня.

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