OAuthは、Webアプリケーションおよびモバイルアプリケーションでよく使用される認証ソリューションです。
OAuthを使用することの落とし穴は、これらの2つのシナリオにあります(OAuth他のWebサイトへのユーザー情報へのアクセスを提供し、さらにモバイル(Android、iOSなど)アプリケーション。
まあ最初の考慮事項は SSL/TLSは絶対に必要です 正しく。
2レッグまたは3レッグの認証メカニズムも検討する必要があります。ほとんどの人がより複雑な(そして安全な) -leggedアプローチ を推奨しますが、特定のアプリに対して正しく実行すると 2-leggedが有利になる になる可能性があります。
rootlabs によっていくつかの OAuthでのタイミング攻撃の発見 が行われました。 XSS/CSRF および ClickJacking (およびauthnに対するその他の攻撃)にもリスクがあります。これは、他のWebアプリケーションと同じです。
ArsTechnicaは OAuthセキュリティアーキテクチャ に関する2つの記事を掲載しました。1つは Bruce Schneier からリンクされています。
モバイルおよびデスクトップアプリケーションでのOAuth 1.0aの最大の問題は、リクエストへの署名に使用されるコンシューマー/アプリケーションキーとコンシューマー/アプリケーションシークレットが抽出され、公開されることです。
たとえば、データのプロバイダーであり、コンシューマーキーを作成して、ユーザーデータにアクセスする必要がある別のサードパーティのWebアプリケーションに提供する場合、キーとシークレットは常にサードパーティのWebサーバーで非表示になります。だれもそれらにアクセスすることはできません(一部のシステム管理者または開発者を除く)。しかし、このキーは世界中に公開されていません。
ただし、モバイルまたはデスクトップアプリケーションの場合、エンドユーザーはこのアプリケーションを携帯電話/コンピューターにダウンロードする必要があります。したがって、どのハッカーもアプリケーションをダウンロードし、プログラムからキーとシークレットのペアを抽出できます。その結果、彼は元のコンシューマーアプリケーションを装った悪意のあるアプリケーションを構築できます。
これは、少なくとも1.0aバージョンのプロトコルでは、私が知っているOAuthの最も深刻な問題です。エンドユーザーは引き続き悪意のあるアプリケーションへのアクセスを承認する必要があるため、問題はそれほど深刻ではありません。異なる名前が付いていること、および必要なACCESSに疑わしいと思われるかどうかは、ユーザー次第です。ただし、プロバイダーとしてモバイル消費者がいることを期待している場合、彼らがそうであると彼らが信じていることは決してないはずです。
上記のATDREの例に関しては、それほど心配する必要はないと思います。これらの記事はいくつかの仮説的なシナリオを示しており、OAuthの欠陥について具体的なことは何も述べていません。 OAuth 1.0aは、SSLを介して行われる場合、プロトコルとして完全に安全です。彼らが語る攻撃はWebハッキングの一般的な例にすぎず、OAuthとは関係ありません。
たとえば、誰かがエンドユーザーのCookieを盗んだ場合、もちろん、ユーザーの代わりにログインしてリクエストを承認できますが、これはOAuthの問題ではありません。または、プロトコル自体ではなく、プロトコルの特定のライブラリ実装の例であるタイミングの例...
OAuth 2.0の詳細はお伝えできないので、申し訳ありません。そのバージョンはまだ実装していないためですが、1.0aバージョンのプロトコルはセキュリティの観点からは良いと言えます...
私はコメントするのに十分なポイントがないので、これを答えとして追加しました。 OAuthは、最初は承認プロトコルであり、主に認証ではありません。認証がプロトコルに組み込まれている場合でも、それは主な目的ではありません。