2010-08-11 19 views
1

Lorsque l'application Remote d'Apple tente de se connecter à un Mac (exécutant iTunes) sur un réseau local (via le Wi-Fi), l'utilisateur doit entrer un code d'accès fourni par l'iPhone. mesure de sécurité. Cette approche a été adoptée par un certain nombre d'autres applications (par exemple, Rowmote, Pastebot, ...). Y a-t-il une API qui fournit cette façon de travailler?Connecter l'iPhone/iPad avec Mac (façon Apple)

En supposant que Bonjour est en jeu, comment un iPhone vérifie-t-il si le mot de passe saisi sur un Mac est correct sans résoudre le NSNetService qu'il publie? Ou est-ce que l'iPhone résout le NSNetService qu'un Mac publie et attend que le code d'accès soit confirmé avant de traiter tout autre paquet qui pourrait être envoyé via NSNetService (paquets autres que le code d'accès).

J'ai une solution à mon problème, mais j'aimerais savoir s'il y a une API que j'ai oubliée qui fournit une solution toute faite.

Les conseils et les pointeurs sont les bienvenus.

Merci à l'avance,

Bart

Répondre

0

Je ne crois pas qu'il y ait un Apple fourni API pour cela. J'utilise simplement les API Bonjour pour ouvrir une connexion entre deux appareils, puis en créer un de manière aléatoire et demander à l'autre appareil de le faire. L'autre appareil présente une interface utilisateur pour demander le mot de passe à l'utilisateur, puis le renvoie et attend une réponse. Si elles correspondent, les périphériques stockent les identifiants de l'autre pour ignorer ce processus la prochaine fois qu'ils se connectent.

Editer: Merci à tc de souligner que cette implémentation n'est pas totalement sécurisée. J'ai maintenant un périphérique créer un mot de passe unique et aléatoire, et l'envoyer à l'autre périphérique, puis stocker le hachage SHA1 du mot de passe pour référence future. Ensuite, l'autre périphérique stocke le mot de passe et le renvoie à chaque fois qu'il se connecte pour l'authentification. L'utilisateur fait une fois le code numérique afin de faire savoir aux appareils qu'ils devraient se faire confiance à l'avenir, mais pour qu'un ingénieur en marche arrière puisse se connecter à un appareil, il doit connaître l'identifiant et le mot de passe de l'appareil. un appareil connecté et valide. (Ou ils devraient avoir accès aux deux appareils et faire le code numérique, il n'y a pas vraiment moyen d'empêcher quelqu'un de le faire, évidemment).

+1

-1 Non sécurisé! Les identifiants de périphérique peuvent être "forgés" si quelqu'un reverse votre protocole. –

+0

Quoi de mieux pour éviter d'avoir à refaire l'authentification par mot de passe? –

+0

Deux questions: 1) Cela implique que vous effectuez une connexion réelle pour envoyer au Mac la demande d'un mot de passe. Droite? 2) Je me demande comment Apple parvient à envoyer tous les Mac exécutant iTunes sur le même réseau que la demande de code d'accès (sous la forme de votre iPhone apparaissant dans iTunes). Est-ce qu'il se connecte à tous ces Mac? Merci pour votre commentaire! –