web-dev-qa-db-ja.com

OAuthがリクエストトークンとアクセストークンを持つように設計されているのはなぜですか?

OAuthプロトコルでは、サービスコンシューマーは、サービスプロバイダードメインでリクエストトークンを承認するようにユーザーに要求し、次にリクエストトークンを交換します。 = for アクセストークンサービスプロバイダーから。

なぜOAuthは、プロトコルに2つのトークンを持つように設計されているのか疑問に思います。

このプロセスで単一のトークンを使用しないのはなぜですか?つまり、ユーザーはトークンを承認し、サービスコンシューマーはトークンを使用してプロバイダーから情報を取得します。

40
Morgan Cheng

使いやすさとセキュリティ上の理由から。

OAuthの初心者向けガイドから:

https://hueniverse.com/beginners-guide-to-oauth-part-iii-security-architecture-e9394f5263b5

...主にOAuth仕様が進化した方法のアーティファクトですが、2トークン設計はいくつかの使いやすさとセキュリティ機能を提供します仕様にとどまる価値がありました。OAuthは、ユーザーとのエンゲージメントと承認の要求に使用されるフロントチャネルと、によって使用されるバックチャネルの2つのチャネルで動作します。消費者はサービスプロバイダーと直接対話します。アクセストークンをバックチャネルに制限することにより、トークン自体はユーザーから隠されたままになります。これにより、アクセストークンは特別な意味を持ち、承認をリクエストするときにユーザーに公開されるフロントチャネルリクエストトークンよりも大きいサイズであり、場合によっては手動で入力する必要があります(モバイルデバイスまたはセットトップボックス)。

===

この質問はの重複であることに注意してください

OAuthで「トークン資格情報の一時的な資格情報を変更する」必要があるのはなぜですか?

Beginner’s Guideの説明が明確でない場合は、 @ npdotyの見解 を読んでください。

29
Bert F

から 公式OAuth 1.0ガイド

OAuthプロトコルを使用すると、ユーザーがサービスプロバイダーの資格情報をコンシューマーに開示しなくても、Webサイトまたはアプリケーション(コンシューマー)がAPIを介してWebサービス(サービスプロバイダー)から保護されたリソースにアクセスできます。 、OAuthは、API認証のための自由に実装可能な一般的な方法を作成します。

使用例の例は、印刷サービスprinter.example.com(コンシューマー)が、ユーザーがphotos.example.net資格情報をprinter.exampleに提供することなく、photos.example.net(サービスプロバイダー)に保存されているプラ​​イベート写真にアクセスできるようにすることです。 .com。

OAuthは、特定のユーザーインターフェイスや対話パターンを必要とせず、サービスプロバイダーがユーザーを認証する方法も指定しないため、OpenIDなど、コンシューマーが認証資格情報を利用できない場合に最適なプロトコルになります。

OAuthは、委任されたWebサービス認証のエクスペリエンスと実装を単一のコミュニティ主導のプロトコルに統合することを目的としています。 OAuthは、さまざまなWebサイトによって個別に実装されている既存のプロトコルとベストプラクティスに基づいています。大小のプロバイダーによってサポートされているオープンスタンダードは、アプリケーション開発者とそれらのアプリケーションのユーザー。

つまり、基本的にユーザーはOAuthリクエストトークンのユーザー名とパスワードを指定します。OAuthを使用して、何かに接続したいサービスを提供します。 =リクエストトークンとアクセストークンを受け取ります。これにより、サービスがユーザー名とパスワードを認識/使用しないようになります。

1
Conceited Code