1

背景: SMS API サービスを作成しようとしています。開発者には、開発者 ID と、開発者アカウントに割り当てられた API シークレット キーがあります。開発者は、API への呼び出しを発行するアプリを作成します。ただし、呼び出しを発行するアプリケーションを最初に検証する必要があります。

問題: 私が抱えている主な問題は、認証に関するものです。私はOAuthについて読んで、ほとんど理解しました。このプレゼンテーションを読みました(スライド 71-82)。すべての OAuth 記事は、OAuth の「ダンス」または「三角関係」について語っています。私の問題は、私の場合、適切な三角形が表示されないことです。または、より良い言い方をすれば、三角形は完全ではないようです。

つまり、LinkedIn の場合、ユーザーが LinkedIn アカウントを Twitter に関連付けるのに役立つアプリを作成しようとしている場合、OAuth は完全に理にかなっています。LinkedIn は、ユーザーに代わって Twitter からリソースを取得する必要があるためです (ユーザーは TWITTER アカウントを持っているため)。私の場合、消費者だけが私のサービスに登録された開発者アカウントを持っています。エンドユーザーには、消費者が代わりに尋ねる資格情報がありません。では、どうすれば Oauth を実装できますか? では、消費者はプロバイダーに何を尋ねますか? 「気をつけて、ここに来ますか?」とのみ記載されますか?アクセストークンと引き換えにリクエストトークンを要求しない限り、それはかなり無意味に思えます。ただし、この場合、エンド ユーザーはアカウントを持っていないため、この手順は役に立たないように見えます。

したがって、この認証の問題を解決する方法がわかりません。API を使用している特定のクライアントにトークンを関連付けるのに役立つように、PHP セッションの使用について考えてみました。しかし、REST/OAUTH の純粋主義者は、認証におけるセッションの使用について意見が分かれているようです。彼らは、OAuth はそれ自体が証明された標準であり、私自身のあいまいなスキームを考え出す代わりに使用すべきものであると主張しています。

4

1 に答える 1

2

あなたの説明から、あなたは 2 者のシナリオのみにいるようです (開発者は、エンドユーザーに代わってではなく、自分のために API にアクセスするコードを記述します)。シナリオは必要ありません。

ほぼすべての認証スキームを使用でき、それが機能します (API キー、他の oAuth 付与タイプ [以下を参照]、または ID/シークレットの組み合わせさえも)。oAuth の世界では:

  • 他の oAuth 2.0 付与タイプを見てください。特にリソース所有者の PW 付与 - https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-26#section-4.3。これは、PW が常にチャネルを介して渡されるわけではなく (一度は渡されます)、コードを書いている開発者が資格情報の所有者であると想定するため、username-password よりもわずかに優れています。

  • oAuth v1.0 を見てください: これは v2.0 とはさまざまな点で異なりますが、一部の人々が好む特徴の 1 つは、トークンの使用方法です。これは、ネットワークを介して渡されるのではなく、ハッシュを生成するために使用されます。ハッシュはサーバー側で検証されます。キーをチェックするよりも高価で複雑ですが、攻撃を受ける可能性は低くなります。

非 oAuth の世界では、それが主に開発者が直接使用するサーバー リソースである場合、ID/シークレットまたは API-Key パターンでおそらく十分であり、開発者にとってははるかに簡単に実装できます。

Re: oAuth - 何らかのタイプのユーザー認証を行っている場合は、間違いなく標準に固執してください。物事は複雑であり、そこにライブラリがあると本当に役立ちます。developer-api の場合は、そこまでする必要はありません。

理想的な世界で API を安全にしたい場合は、セキュリティ トークンがギャップを越えて通過する必要があるものはすべて、SSL を使用して保護する必要があります。特に、そのクライアント コードが、ワイヤレスで通信するモバイル デバイスまたはラップトップで実行される可能性がある場合はそうです。そうでない場合、誰かが開発者のトークンのコピーに飛び込む可能性があります。

これを回避する上記のプロトコルの 1 つだけが oAuth 1.0 バリエーションです。これは、シークレットがクライアントを離れることはなく、代わりにハッシュに使用されるためです。しかし、それは複雑です。最後に確認するのは、oAuth 1.0 http://docs.amazonwebservices.com/AmazonS3/latest/dev/RESTAuthentication.htmlに似たハッシュを行う Amazon AWS パターンで、人々はかなりエミュレートします。

于 2012-05-27T12:41:06.433 に答える