Я строю клиентскую/серверную iPhone-игру, где я хотел бы, чтобы сторонние клиенты могли обращаться к серверу. Это происходит по двум причинам: во-первых, моя модель дохода заключается в том, чтобы продать клиента и отдать услугу, а во-вторых, я хочу избежать распространения клиентов, которые облегчают обман.Ограничение доступа к серверу для iPhone app
Я пишу первую версию сервера в рельсах, но в какой-то момент я планирую перейти к erlang.
Я рассматриваю два подхода:
Генерировать «имя пользователя» (скажем, GUID) и хэш его (SHA256 или MD5) с секретом поставляется с приложением, и использовать результат как пароль". Когда клиент подключается к серверу, оба отправляются через HTTP Basic Auth over https. Сервер хэширует имя пользователя с тем же секретом и гарантирует, что они совпадают.
Отправка сертификата клиента с помощью приложения для iPhone. Сервер настроен так, чтобы требовать наличия сертификата клиента.
Первый подход имеет то преимущество, что он прост, низкими накладными расходами, и может быть проще запутать секрет в приложении.
Второй подход хорошо протестирован и проверен, но может быть выше накладных расходов. Тем не менее, мои знания о клиентских сертификатах находятся на «прочитайте об этом на уровне журнала Delta Airlines в полете». Сколько пропускной способности и накладных расходов на обработку данных будет иметь место? Фактические данные, передаваемые по запросу, составляют порядка килобайта.
Я пытаюсь устранить концепцию «учетной записи» до пользователь обеспокоен. Они будут получать доступ к игре только через мое приложение, поэтому я не хочу обременять их выбором имени пользователя, которое, вероятно, уже принято, и пароль, вероятно, слабый. –
Эта ссылка выигрывает у вас «ответ». –