Соедините iPhone / iPad с Mac (Apple) - PullRequest
1 голос
/ 11 августа 2010

Когда приложение Apple Remote пытается подключиться к Mac (с iTunes) в локальной сети (с помощью Wi-Fi), пользователю необходимо ввести код доступа, предоставленный iPhone, в качестве меры безопасности.Этот подход был принят рядом других приложений (например, Rowmote, Pastebot, ...).Существует ли API, обеспечивающий такой способ работы?

Если предположить, что Bonjour находится в игре, как iPhone проверяет правильность введенного пароля на Mac без разрешения NSNetService, которую публикует Mac?Или iPhone разрешает NSNetService, который Mac публикует, и ожидает подтверждения пароля перед обработкой любых других пакетов, которые могут быть отправлены через NSNetService (пакеты, отличные от пароля).

У меня есть решение длямоя проблема, но я хотел бы знать, есть ли пропущенный мной API, который предоставляет готовое решение.

Приветствуются советы и указатели.

Заранее спасибо,

Bart

1 Ответ

0 голосов
/ 11 августа 2010

Я не верю, что для этого есть API от Apple.Я просто использую API Bonjour, чтобы открыть соединение между двумя устройствами, затем один случайным образом создает 4-значный пароль и запрашивает его у другого устройства.Другое устройство представляет пользовательский интерфейс, чтобы запросить пароль у пользователя, затем передает его обратно и ждет ответа.Если они совпадают, устройства сохраняют идентификаторы друг друга, чтобы пропустить этот процесс при следующем подключении.

Редактировать: Спасибо tc за указание на то, что эта реализация не является полностью безопасной.Теперь у меня есть одно устройство, создающее уникальный случайный пароль и отправляющее его на другое устройство, а затем сохраняющее SHA1-хэш пароля для дальнейшего использования.Затем другое устройство сохраняет пароль и отправляет его обратно всякий раз, когда оно подключается для аутентификации.Пользователь один раз выполняет числовой код, чтобы устройства знали, что они должны доверять друг другу в будущем, но теперь, чтобы реверс-инженер мог подключиться к устройству, ему нужно было бы знать и идентификатор, и пароль длядействительное подключенное устройство.(Или им нужно было бы иметь доступ к обоим устройствам и выполнять числовой код; на самом деле, никто не может помешать этому, очевидно).

...