暗黙的権限付与タイプ

カスタム・アプリケーションがクライアント資格証明の機密を保持できず、認可リクエストからアクセス・トークンを直接(中間の認可コードではなく)受信する場合、この付与タイプを使用します。

次のダイアグラムに、暗黙的な権限付与タイプのフローを示します。

暗黙的な権限付与タイプのフローを示す図。

このOAuthフロー:

  1. カスタム・アプリケーションは、たとえば、JavaScriptなどのスクリプト言語を使用してクライアント側アプリケーションに実装されたり、モバイル・デバイスに実装されます。ユーザーは、アプリケーションを介して、認証と承認をリクエストします。

  2. クライアント・アプリケーションは、ユーザーに資格証明を入力するように要求します。

  3. ユーザーは自分の資格証明を入力します。

  4. 認可されると、ユーザーは、URLフラグメントにアクセス・トークンを含むURLにリダイレクトされます。

  5. アプリケーションは、URLからアクセス・トークンを抽出します。

  6. アクセス・トークンは、保護されているリソース(ユーザーのリストなど)に対するリクエストで使用されます。

機能 選択可能
クライアントの認証が必要 いいえ
ユーザー資格証明をクライアントに認識させる必要があります。 いいえ
ブラウザベースのエンド・ユーザーとの対話 はい
認証のために外部アイデンティティ・プロバイダの使用が可能 はい
リフレッシュ・トークンを許可 いいえ
アクセス・トークンがエンド・ユーザーのコンテキスト内 はい

暗黙的な権限付与タイプの認可のフローの例を参照してください。

暗黙的な権限付与タイプの認可フローの例

この暗黙的な権限タイプ認可例では、JavaScriptなどのスクリプト言語を使用してWebブラウザに実装されたアプリケーション、またはモバイル・デバイスに実装されたアプリケーションの認可フローについて説明します。アクセス・トークンは、中間認可コードではなく、リソース所有者の認可リクエストに応答してブラウザ・リダイレクトを介してクライアントに返されます。

アイデンティティ・ドメイン・コンソールで、クライアント側アプリケーション認可用のアプリケーションを作成する場合:

  • これがモバイル・アプリケーション・タイプであることを指定します。

  • 権限付与タイプとして「Implicit」を選択します。このタイプのアプリケーションは、シークレットを保持できず、未承認のWebブラウザまたはモバイル・デバイス上で実行されます。

暗黙的な付与タイプおよび認可フロー・ダイアグラムの詳細は、暗黙的な付与タイプを参照してください。

処理ステップ

  1. ユーザーは、ブラウザ・アプリケーションでサインイン・リンクをクリックするか、またはデバイス上でサインイン・ボタンをタップして、クライアント・アプリケーションから保護されているリソースへのアクセスをリクエストします。

  2. クライアントは、認可のリクエストを使用して、ブラウザをOAuth認可サーバーにリダイレクトします。

    サインインURLには、リクエストされているアクセスのタイプを示す問合せパラメータが含まれます。

    リクエストの例 https://acme.identity.us.oraclecloud.com/oauth2/v1/authorize?client_id=<client-id>&response_type=token&redirect_uri=<client-redirect-uri>&scope=<scope>&nonce=<nonce-value>
    ノート

    nonce値は、インターセプトされたレスポンスが再利用されないようにするために使用する、暗号化された強力なランダム文字列です。
  3. ユーザーがまだログインしていない場合、OAuth認可サーバーはユーザーの認証を試します。OAuth認可サーバーは、ユーザーを認証し、ユーザーが情報の共有を認可するための承諾ページを表示します。

  4. ユーザーの認証後に、OAuth認可サーバーはアクセス・トークンとともにリクエスト・サイトにブラウザをリダイレクトします。
    ノート

    ユーザーが認証しない場合は、アクセス・トークンではなくエラーが返されます。
  5. リクエスト側のクライアント・アプリケーションおよびクライアントのリクエストで指定されたユーザー(ある場合)に付与されたアプリケーション・ロールによって示される権限に基づいて、適用可能なすべてのスコープが含まれるアクセス・トークンが返されます。

  6. リクエスト・サイトは、APIコールでアクセス・トークンを使用して、保護されているデータを取得します。