認可グラント


認可グラント

Login with Amazon認可サービスには、ウェブサイトまたはモバイルアプリがユーザーを認証してユーザープロファイルにアクセスするために使用できる2種類の認可グラントが用意されています。インプリシットグラントと認可コードグラントの2種類があります。

以下のセクションで、HTTPのリクエストとレスポンスに関連付けて各グラントを説明します。モバイルSDKでは独自のメソッドとコールバックでこれらの呼び出しをラップしますが、全体的なフローは同じです。

インプリシットグラント

インプリシットグラントでは、ユーザーがリンクをクリックする(またはボタンを押す)(A)と、Amazonログインページが表示されます。ログイン後、ユーザーは特定のプロファイルデータに対するアプリのアクセス許可を求められ(B)、その後アプリが再表示されます。

ユーザーがアクセスを許可すると、URIフラグメントとしてリダイレクトURIに直接アクセストークンが埋め込まれます(C)(これがインプリシットグラントです)。アクセストークンを含むURIフラグメントは、ユーザーエージェント(ウェブブラウザ)によってリダイレクトURIから取り除かれ、ユーザーエージェントはURIを実行します(D)(この時点で、ユーザーはクライアントにログインしていることを認識し、通常とおりにアプリの使用を続行します)。

クライアントウェブサイトは、ブラウザベースのスクリプト(JavaScriptなど)を使用してアクセストークンを取得し、ユーザーエージェントにフラグメントを問い合わせます(E)。その後、スクリプトはクライアントにアクセストークンを送信します(F)。または、アクセストークンを使用してAmazonからユーザープロファイルデータを直接取得します(G)。

インプリシットグラントのフロー

認可コードグラント

認可コードグラントでは、ユーザーがリンクをクリックする(またはボタンを押す)(A)と、Amazonログインページが表示されます。ログイン後、ユーザーは特定のプロファイルデータに対するアプリのアクセス許可を求められ(B)、その後アプリが再表示されます。認可コードは、クエリパラメーターとしてリダイレクトURIに直接埋め込まれます(C)(これが認可コードグラントです)。ユーザーエージェントは、クエリパラメーターを含むURIを実行します(この時点で、ユーザーはアプリにログインしていることを認識し、通常どおりに操作を続けています)。

クエリパラメーターはアプリによって直接処理されます。アプリは認可コードを使用して認可サービスに直接アクセストークンをリクエストします(D)。認可コードは、アプリのみが知っているクライアント識別子およびクライアントシークレットとペアリングされる必要があります。これにより、悪意のあるソフトウェアが認可コードを奪ってアプリになりすますことを防ぎます。

認可コード、クライアント識別子、クライアントシークレットの確認後、認可サービスからアプリにアクセストークンとリフレッシュトークンが付与されます(E)。アクセストークンを使用して、Amazonのユーザープロファイルデータにアクセスできます。アクセストークンの有効期限が切れたら、リフレッシュトークンを使用して新しいアクセストークンとリフレッシュトークンを取得できます。

認可コードグラントのフロー