OAuth 2.定義のClient
、User-Agent
、およびResource Owner
の違いは何ですか?
各用語の例は何ですか? (ブラウザ、ユーザー、...)
ユーザーエージェントは、ユーザー(リソース所有者)が承認サーバーと通信するためのブラウザーまたはモバイルアプリケーションです。クライアントは、リソースサーバー上のユーザーのリソースにアクセスするアプリケーションコードです。
これで、クライアントはサーバー(Webアプリケーションなど)、デバイス(モバイルアプリ)、またはブラウザー(JavaScriptアプリ)に存在できます。クライアントがサーバー上にある場合、それは機密クライアントと見なされます(秘密を保持できます)。デバイスまたはブラウザに存在する場合は、パブリッククライアントです。
使用しているクライアントのタイプによって、使用する OAuth付与 が決まります。パブリッククライアントでは、クライアント自体を承認サーバーで認証することはできません(ユーザーのみが認証されます)。したがって、承認サーバーから更新トークンを取得することはできません。
ユーザーエージェントはブラウザです。
クライアントはエンドユーザー側で実行されるコードであり、ブラウザーで実行されている場合とされていない場合があります。クライアントはブラウザ(ユーザーエージェント)を使用してログインします。ここでの考え方は、ユーザーは自分の資格情報でブラウザーを信頼する必要があるのに対し、ネイティブクライアントコードは信頼しないということです。最後の例。
リソース所有者は、アプリケーションが自分のアカウントからリソース(データ)にアクセスすることを許可するユーザーです。
例:Flickrの写真にアクセスしたいスライドショーアプリ(クライアント)がiPadにあるとします。このスライドショーアプリはMysteriousAppDeveloperIncによって開発されました。そのアプリがあなた(リソース所有者)に写真にアクセスできるようにFlickr資格情報を提供するように求めた場合、セキュリティ面でのユーザーであるあなたはそうしません。そのアプリがあなたの資格情報で何をするかを考えてください。幸いなことに、資格情報を要求するのではなく、信頼できるipadブラウザー(ユーザーエージェント)を転送してFlickrにログインします。ブラウザからflickrにログインすると、スライドショーのipadアプリがFlickrの写真へのアクセスを要求します。アクセスを許可すると、そのアプリは、パスワードにアクセスしなくても、画像(アクセス制限のある画像を含む)のスライドショーを表示できます。スライドショーアプリがあなたの資格情報を取得せず、彼らといたずらなことをしたことを知って、あなたは夜よく眠ります。
私の意見では、Oauth仕様はあまり動機付けられていません。プロトコルの要点は、ユーザーが資格情報を使用して任意のアプリケーションを信頼してはならないということです。代わりに、信頼をブラウザーなどのアプリケーションに制限する必要があります。とにかく誰もが依存しているプロトコルは、ユーザーがこれを効果的に理解することを要求します。