(Давайте проигнорируем тот факт, что NSConnection
теперь устарела.)
У меня есть инструмент, который принимает подключения к NSConnection через сервисный порт. У меня есть приложение, которое запускает инструмент, а затем подключается к нему. Эта часть работает.
Теперь я хочу убедиться, что только мое конкретное приложение может общаться с инструментом, и что инструмент отклоняет соединения от любого другого инструмента / приложения.
Как мне лучше всего это сделать?
Одна идея у меня была:
Поскольку приложение запускает инструмент, оно может передавать «секрет» инструменту в качестве аргумента, а затем я передаю этот же секрет в инструмент всякий раз, когда вызываю одну из его функций в качестве объекта NSDistributedObject. Однако это означало бы, что я должен передавать этот дополнительный аргумент каждому звонку, который я делаю, и я думаю, что это ненужные накладные расходы.
Я бы подумал, что могу принять или отклонить соединение прямо, когда приложение открывает соединение с инструментом, то есть только один раз. Это NSConnectionDelegate
, и я подозреваю, что мне придется реализовать проверку аутентификации в обработчике authenticateComponents:withData:
, но я не могу найти примеров, которые бы объясняли, как это сделать. Я имею в виду, есть ли какие-либо данные в этой попытке подключения, которые идентифицируют приложение, запрашивающее подключение, например, его PID?