4

モバイルデバイスとWebサービス間の接続を保護するためのプロトコルを探しています。モバイルデバイスのみがWebサービスでアクションを実行できるようにし、その逆も可能にしたい。データを暗号化する必要はありません。

Oauthは知っていますが、3つの異なるエンティティ(サーバー、コンシューマー、認証)を取得した場合、接続を保護するために使用されるようです。ここでは、コンシューマーとユーザーは同じ人物になります。

これを行うための簡単なプロトコルはありますか(Oauthの場合のように、ユーザーがログインしてからアクセストークンを承認する必要はありません)?

さまざまなプレートフォームで使用する必要があるため、プロトコルは少なくともiPhoneとPHPで使用できる必要があります。

4

3 に答える 3

3

「安全」の意味を明確にする必要があります。正確には何に対して安全ですか?何を心配していますか?

とはいえ、https (http over SSL) は良い出発点です。これにより、デバイス (またはブラウザー) に対して Web サイトを認証できるようになり、ユビキタスになります。

デバイスを認証したい場合は、もう少し注意が必要です。共有シークレット (乱数) を生成して保存し、最初にサイトに接続するときにそれを GET/POST で提供します。これには多くのバリエーションがありますが、単純なものはすべて共有シークレットを確立することから生じます。それ以外はおそらくやり過ぎです。これにより、次回接続時に同じデバイスが再び接続されていることを認識することができます。デバイスがログインするためのパスワードのようなものだと考えてください (ただし、単語である必要はなく、おそらく単語であってはなりません)。

これの難点は、プログラムが削除されるとその秘密が失われることです。正確に何をしたいかによっては、次にプログラムを同じデバイスで実行するときに確立する必要があるため、問題になる可能性があります。新しい秘密。その場合、今回接続するデバイスが以前に接続したデバイスと同じであることを知る方法はありません。それが必要な場合は、ある種のリセット メカニズムを使用する必要がありますが、これは実行が難しく、デバイスではなくユーザーを認証することになります。

iphone には一意の識別子がありますが、それは実際には秘密ではなく、それを提供しても、特定のデバイスが接続されているという証拠にはなりません。それを提供しても害はありませんが、身元の証明というよりも、「私はデバイス foo です」というアサーションのようなものです。ログインのユーザー名の部分のようなものだと考えてください。それでも共有シークレットが必要です。

于 2009-07-01T00:32:54.977 に答える
1

私は解決策を見つけました:「2足のOauth」プロトコルを使用してください。

このようにして、私は標準に固執し、車輪を再発明する必要がなく、安全なソリューションを手に入れました.

私にとって消費者とユーザーは同じなので、消費者がユーザーとしてログに記録されていることを確認したときに、消費者が要求している「リクエストトークン」を自動的に承認するだけです!

私がやっていることは:

  • SSL の場合: ユーザーとしてログインし、サーバーにコンシューマー キー/シークレットを要求します。
  • サーバーからコンシューマ キー/シークレットが返されます
  • SSL の場合: ユーザーとしてログインし、コンシューマ キー/シークレットを使用して「リクエスト トークン」をリクエストします。
  • サーバーは私がユーザーであることを認識するため、リクエストトークンを自動的に承認します
  • SSL なし: 「リクエスト トークン」で「アクセス トークン」を要求します。
  • サーバーはアクセストークンを返します
  • リクエストを安全に実行するために使用します
于 2009-07-01T12:16:33.267 に答える
0

おそらく、HTTPS 接続を介して共有シークレット/一方向暗号化ハッシュを使用して独自のロールを作成できます。

次に、それが特定のデバイスのみであることを確認したい場合は、デバイス ID + タイムスタンプ + デバイスの共有シークレットのハッシュを作成し、それをパラメーターとしてサーバーに渡し、PHP 側でハッシュを検証します。

于 2009-06-30T18:24:14.557 に答える