1

Apple の Remote アプリが (WiFi を使用して) ローカル ネットワーク上の Mac (iTunes を実行) に接続しようとすると、ユーザーはセキュリティ対策として iPhone から提供されたパスコードを入力する必要があります。このアプローチは、他の多くのアプリ (Rowmote、Pastebot など) で採用されています。この作業方法を提供する API はありますか?

Bonjour が使用されていると仮定すると、Mac が公開している NSNetService を解決せずに、iPhone は Mac で入力されたパスコードが正しいかどうかをどのように確認するのでしょうか? または、iPhone は、Mac が公開している NSNetService を解決し、パスコードが確認されるのを待ってから、NSNetService 経由で送信される可能性のある他のパケット (パスコード以外のパケット) を処理しますか。

私は自分の問題の解決策を持っていますが、既製の解決策を提供する見落としている API があるかどうかを知りたいです。

アドバイスや指摘は大歓迎です。

前もって感謝します、

バート

4

1 に答える 1

0

このための Apple 提供の API があるとは思えません。Bonjour API を使用して 2 つのデバイス間の接続を開き、一方に 4 桁のパスコードをランダムに作成させ、もう一方のデバイスにそれを要求するだけです。もう一方のデバイスは、ユーザーにパスコードを要求する UI を提示し、パスコードを返信して応答を待ちます。それらが一致する場合、デバイスは互いの識別子を保存して、次回の接続時にこのプロセスをスキップします。

編集: この実装が完全に安全ではないことを指摘してくれた tc に感謝します。現在、1 つのデバイスで一意のランダム パスワードを作成し、それを別のデバイスに送信してから、後で参照できるようにパスワードの SHA1 ハッシュを保存しています。次に、他のデバイスはパスワードを保存し、認証のために接続するたびにそれを送り返します。ユーザーは、デバイスが将来的に相互に信頼する必要があることをデバイスに知らせるために、一度番号コードを実行しますが、リバース エンジニアがデバイスに接続するには、デバイスの識別子とパスワードの両方を知っている必要があります。有効な接続済みデバイス。(または、両方のデバイスにアクセスして番号コードを実行する必要があります。明らかに、誰かがそれを行うのを止める方法は実際にはありません)。

于 2010-08-11T17:21:31.047 に答える