何らかの盲点があるかどうかはわかりませんが、OAuth 2仕様を何度も読み、メーリングリストのアーカイブをよく読みました。また、暗黙の許可の理由についてはまだよくわかりません。アクセストークンを取得するためのフローが開発されました。Authorization Code Grantと比較すると、それほど説得力のある理由もなく、クライアント認証をあきらめているようです。これはどのようにして(仕様を引用するために)スクリプト言語を使用してブラウザに実装されたクライアント向けに最適化されていますか?
どちらのフローも同じように始まります(ソース:http : //tools.ietf.org/html/draft-ietf-oauth-v2-22):
- クライアントは、リソース所有者のユーザーエージェントを認証エンドポイントに送信することでフローを開始します。
- 認可サーバーは、リソースオーナーを(ユーザーエージェント経由で)認証し、リソースオーナーがクライアントのアクセス要求を許可するか拒否するかを確立します。
- リソースの所有者がアクセスを許可すると、認証サーバーは以前に(リクエスト内またはクライアントの登録時に)提供されたリダイレクトURIを使用してユーザーエージェントをクライアントにリダイレクトします。
- リダイレクトURIには認証コード(認証コードフロー)が含まれています
- リダイレクトURIには、URIフラグメントにアクセストークンが含まれます(暗黙的なフロー)。
ここで、フローが分割されます。どちらの場合も、この時点でのリダイレクトURIは、クライアントがホストするいくつかのエンドポイントに対するものです。
- 承認コードフローでは、ユーザーエージェントがURIの承認コードでそのエンドポイントに到達すると、そのエンドポイントのコードが、必要に応じて使用できるアクセストークンのクライアント資格情報と共に承認コードを交換します。たとえば、ページ上のスクリプトがアクセスできるWebページにそれを書き込むことができます。
- 暗黙的フローは、このクライアント認証ステップを完全にスキップし、クライアントスクリプトを含むWebページをロードするだけです。アクセストークンが過剰に渡されないようにするURLフラグメントには、ここにかわいいトリックがありますが、最終的な結果は基本的に同じです。クライアントがホストするサイトは、アクセストークンを取得できるスクリプトを含むページを提供します。
したがって、私の質問:クライアント認証手順をスキップすることで、ここで何が得られましたか?