付与タイプ

Verifyグラントタイプとは、クライアントがIDトークンおよびアクセストークンを取得するために使用する認証メカニズムを指します。 認証コードインプリシット認証コードとインプリシットの組み合わせデバイスフローリソース所有者の認証情報JWTコンテキストベースの認証リフレッシュトークントークン交換の中から選択できます。

サポートされる付与タイプを比較したり、アプリケーションに設定する付与タイプを判別するには、以下の表を参照してください。
表 1. 助成金の種類
特性 許可コード 暗黙的 「許可コード」および「暗黙的」
説明

許可エンドポイント /authorize は、許可コードを返します。 その後、許可コードを ID トークン、アクセス・トークン、またはリフレッシュ・トークンと交換することができます。

クライアント ID および秘密鍵を使用してトークン・エンドポイント /token から ID トークンまたはアクセス・トークンを取得するには、クライアント認証が必要です。

これは最も一般的に使用されるフローです。

許可エンドポイント /authorize は、ID トークンまたはアクセス・トークンを直接返します。

許可コードもトークン・エンドポイント /token も使用しません。

これにより、クライアントのフロントエンドとバックエンドは互いに独立してトークンを受信できます。

クライアントは、許可エンドポイント /authorize から許可コードとトークンを取得します。 一部のトークンは、トークン・エンドポイント /token から要求されます。

ユース・ケース

Web アプリケーションやネイティブ・モバイル・アプリケーションなどの、クライアント秘密鍵をセキュアに維持できるクライアント に使用します。

これは、ユーザーおよびクライアントの認証を行うことを目的としています。

ブラウザーや JavaScript ベースのアプリケーションなどの、クライアント秘密鍵を保持できないクライアント に使用します。

これは、ユーザーを認証するためのものです。

以下のようなクライアント に使用します。
  • クライアント秘密鍵をセキュアに維持できる (Web アプリケーションやネイティブ・モバイル・アプリケーションなど)。
  • ID 情報の ID トークンに即時にアクセスする必要がある。
  • リフレッシュ・トークンを使用した存続期間の長いトークンを必要とする。
応答タイプの値
code
id_token
token
id_token token
code id_token
code token
code id_token token
すべてのトークンが許可エンドポイントから返される。 いいえ はい いいえ
すべてのトークンがトークン・エンドポイントから返される。 はい いいえ いいえ
トークンがユーザー・エージェントに公開されない。 はい いいえ いいえ
クライアント・アプリケーションを認証できる。 はい いいえ はい
リフレッシュ・トークンを生成する。 はい いいえ はい
1 往復での通信 いいえ はい いいえ
ほとんどのサーバー間通信 はい いいえ 状況による
ログインのヒント (login_hint) はい
john@ibm.comこの値は、文字列形式のユーザー名(例:)や、JSON形式(例:)などです
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
。JSON 値を使用する場合、レルムは ID ソース・レルムを表します。
はい
john@ibm.comこの値は、文字列形式のユーザー名(例:)や、JSON形式(例:)などです
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
。JSON 値を使用する場合、レルムは ID ソース・レルムを表します。
はい
john@ibm.comこの値は、文字列形式のユーザー名(例:)や、JSON形式(例:)などです
{"realm":"securityVerifyRealm",
"username":"john@ibm.com"}
。JSON 値を使用する場合、レルムは ID ソース・レルムを表します。
最大認証期間 (max_age) この値は、ユーザーが最後に能動的に認証された後、許容される経過時間 (秒) です。 この属性は、クラウド・ディレクトリーのログイン・セッションにのみ適用されます。 この値は、ユーザーが最後に能動的に認証された後、許容される経過時間 (秒) です。 この属性は、クラウド・ディレクトリーのログイン・セッションにのみ適用されます。 この値は、ユーザーが最後に能動的に認証された後、許容される経過時間 (秒) です。 この属性は、クラウド・ディレクトリーのログイン・セッションにのみ適用されます。
ワークフロー
  1. クライアントは、必要な要求パラメーターを含む認証要求を準備します。
  2. クライアントは、認証サーバー Verify にリクエストを送信します。
  3. 認証サーバーは Verify ユーザーを認証します。
  4. 認証サーバーは Verify 、ユーザーから同意または承認を取得します。
  5. 認証サーバーは Verify 、認証コードを添えてユーザーをクライアントに戻します。
  6. クライアントは、トークン・エンドポイントで許可コードを使用して認証応答を要求します。
  7. クライアントは、応答本体に ID トークンとアクセス・トークンを含む応答を受信します。
  8. クライアントは、その ID トークンを検証し、ユーザーのサブジェクト ID を取得します。
  1. クライアントは、必要な要求パラメーターを含む認証要求を準備します。
  2. クライアントは、認証サーバー Verify にリクエストを送信します。
  3. 認証サーバーは Verify ユーザーを認証します。
  4. 認証サーバーは Verify 、ユーザーから同意または承認を取得します。
  5. 認証サーバーは Verify 、IDトークン、および要求があればアクセストークンをユーザーに送信し、クライアントへ戻します。
  6. クライアントは、その ID トークンを検証し、ユーザーのサブジェクト ID を取得します。
  1. クライアントは、必要な要求パラメーターを含む認証要求を準備します。
  2. クライアントは、認証サーバー Verify にリクエストを送信します。
  3. 認証サーバーは Verify ユーザーを認証します。
  4. 認証サーバーは Verify 、ユーザーから同意または承認を取得します。
  5. 認証サーバーは Verify 、認証コードと、応答の種類に応じて1つ以上のパラメータをユーザーに含めてクライアントへ返します。
  6. クライアントは、トークン・エンドポイントで許可コードを使用して応答を要求します。
  7. クライアントは、応答本体に ID トークンとアクセス・トークンを含む応答を受信します。
  8. クライアントは、その ID トークンを検証し、ユーザーのサブジェクト ID を取得します。
表 2. 助成金の種類(続き)
特性 デバイス・フロー リソース所有者パスワード資格情報 JWT
説明 QR コードまたは URL に送信するユーザー・コードを使用してクライアントを許可できます。 トークン・エンドポイントである /token からアクセス・トークンと ID トークンを取得するには、クライアント ID、クライアント秘密鍵、ユーザー名、およびパスワードを使用したクライアント認証とユーザー認証が必要です。 ユーザー名とパスワードは、クラウド・ディレクトリーに対して検証されます。 RFC7523 で定義されています。 クライアントが、署名された JWT、暗号化された JWT、または署名されて暗号化された JWT を付与と引き換えに提示することを許可します。 JWT は許可サーバーによって検証され、JWT 内の ID が付与のサブジェクトとして使用されます。
ユース・ケース
以下のようなクライアント に使用します。
  • ユーザー・エージェント・ベースの OAuth フローを実行するブラウザーがない。
  • 入力に制約があり、ユーザーに大量のテキストを入力させるのが実用的でない。
例えば、スマート・テレビ、メディア・コンソール、デジタル写真フレーム、プリンターなどが該当します。
この付与タイプを有効にできますが、使用するのは他のフローが使用できない場合のみにしてください。 次の場合に使用できます。
  • クライアントとの信頼関係があるリソース所有者 (デバイスのオペレーティング・システム、特権の高いアプリケーションなど)。
  • 対話式のフォームを使用してリソース所有者の資格情報 (ユーザー名とパスワード) を取得できるクライアント。
  • 格納されている資格情報をアクセス・トークンに変換することによる、直接認証スキーム (HTTP 基本認証、ダイジェスト認証など) を使用する既存のクライアントの OAuth への移行。
許可サーバー (Verify) とエンティティー (JWT を発行) との間に確立された信頼関係があります。 クライアントは JWT 発行エンティティーから JWT を取得し、付与と引き換えに許可サーバーに提示します。 JWT 発行エンティティーは、JWT を発行するための要件 (代替の認証および許可検査など) を独自に設定している場合があります。
応答タイプの値 適用外 適用外 適用外
すべてのトークンが許可エンドポイントから返される。 いいえ いいえ いいえ
すべてのトークンがトークン・エンドポイントから返される。 はい はい はい
トークンがユーザー・エージェントに公開されない。 はい はい はい
クライアント・アプリケーションを認証できる。 はい はい はい
リフレッシュ・トークンを生成する。 はい はい はい
1 往復での通信
ほとんどのサーバー間通信
ログインのヒント (login_hint) いいえ いいえ いいえ
最大認証期間 (max_age) 適用外
ワークフロー
  1. ユーザーが、デバイスからクライアント ID を送信してユーザー・コードとデバイス・コードを要求することによってフローを開始します。
  2. クライアント ID が有効な場合は、検証 URI、ユーザー・コード、およびデバイス・コードが返されます。
  3. デバイスに、ユーザーがブラウザーに入力する検証 URI とユーザー・コード、またはユーザーがスキャンする QR コードが表示されます。
  4. デバイスが継続的にトークンのデバイス・コードの交換を試行します。
  5. ユーザーが検証 URI およびユーザー・コードをスキャンするか手動でキー入力し、OIDC サービスにユーザー・コードを送信します。
  6. ユーザー・コードが有効な場合は、成功メッセージが送信され、デバイス・コードが交換されてアクセス・トークンが取得されます。
  1. ユーザーが、依拠当事者のフォームに自分のユーザー名とパスワードを入力します。
  2. クライアントが、トークン・エンドポイントにユーザー名、パスワード、クライアント ID、およびクライアント秘密鍵を送信します。
  3. ユーザー名とパスワードが、クラウド・ディレクトリーに照らし合わせて検証されます。
  4. 応答本文に ID トークンとアクセス・トークンが含まれている応答をクライアントが受信します。
  1. クライアントが (任意の外部手段によって) JWT を取得してエンドポイントに提示します。
  2. JWT が検証され、サブジェクトと追加の属性が抽出されます。
  3. 応答本文に ID トークンとアクセス・トークンが含まれている応答をクライアントが受信します。
表 3. 助成金の種類(続き)
特性 コンテキスト・ベースの許可 リフレッシュ・トークン トークン交換
説明 追加の認証および許可検査を実行する API 駆動型フロー。 クライアントに付与が発行される前に、多要素認証が必要になることがあります。 クライアントID、クライアントシークレット、およびリフレッシュトークンを使用して、トークンエンドポイント /token から新しいアクセストークン、IDトークン、およびリフレッシュトークンを取得するには、クライアントおよびユーザーの認証が必要です。 リフレッシュトークンは、同じクライアントIDに属している必要があります。 このフローの実行中は、トークンに関連付けられた属性値は更新されません。 RFC8693 で定義されています。 クライアントが、あるトークンを別のトークンと交換するために提示できるようにします。
ユース・ケース
  • 許可サーバーからのチャレンジ・タイプの応答を処理するために、クライアントをインスツルメントする必要があります。

  • クライアントは、Verify 内で使用可能な認証要素 API を使用して JWTを受信します。この JWT は、フローを継続するために提供されます。
  • クライアントは、「context」パラメーターによって要求にコンテキスト情報を追加する必要があります。
このグラントタイプを使用すると、有効期間が更新された新しいアクセストークンを取得できます。 これにより、アクセストークンの有効期間を短く保つことができますが、新しいアクセストークンを取得するためにユーザーが再度ログインする必要はなくなります。
  • なりすまし:クライアントが別のエンティティとしてリソースにアクセスすること。

  • 委任:依頼人が、権限を与えられた者の代理として行動すること。

応答タイプの値 適用外 適用外 適用外
すべてのトークンが許可エンドポイントから返される。 いいえ いいえ いいえ
すべてのトークンがトークン・エンドポイントから返される。 はい はい はい
トークンがユーザー・エージェントに公開されない。 はい はい はい
クライアント・アプリケーションを認証できる。 はい はい はい
リフレッシュ・トークンを生成する。 はい はい はい
1 往復での通信 はい
ほとんどのサーバー間通信 はい
ログインのヒント (login_hint) いいえ いいえ いいえ
最大認証期間 (max_age) 適用外 いいえ
ワークフロー
  1. クライアントは、リクエストとともに何らかの `context` を提示することで、フローを開始します。 grant_type=Context-based authorization
  2. クライアントは、DENY (このコンテキストでアクセスが許可されない場合) または CHALLENGE (返されたスコープで識別) を受け取ります。
  3. クライアントは、チャレンジ応答で返されたアクセス・トークンを使用して、使用可能な認証要素 API (要素が完了した結果として JWT を要求するフラグを含む) にアクセスします。
  4. 完了した要素から返された JWT が、JWT ベアラー付与要求として /token に再び提示され (コンテキストの包含も必要)、トークンが発行されます。
注:
  • 構成されているポリシーによっては、第 1 要素の実行後に、追加の要素が必要になる場合があります。 これらの要素では、2 番目の CHALLENGE と 2 番目の認証要素の実行が必要になることがあります。
  • この付与タイプでは、カスタム・アクセス・ポリシーを作成してアプリケーションに付加する必要があります。 このアクセス・ポリシーには、第 1 要素認証のルールと、必要に応じて 2FA 要件が含まれている必要があります。
  1. クライアントは、アクセストークンの有効期限が切れるか、すでに切れていることを検知し、新しいアクセストークンを取得しようとしています。
  2. クライアントは、クライアント認証情報とリフレッシュトークンをトークンエンドポイントに送信します。
  3. リフレッシュトークンとクライアント認証情報が検証されます。
  4. クライアントは、レスポンス本文にIDトークン、リフレッシュトークン、およびアクセストークンが含まれたレスポンスを受け取ります。
  1. クライアントは、サブジェクト・トークンとして使用するトークンを生成または取得します。 場合によっては、アクタートークンも含まれることがあります。

  2. 対象トークン、および必要に応じてアクタートークンを添えて、認証サーバーのトークンエンドポイントにリクエストを送信します。

  3. 認証サーバーは、要求されたトークンを返します。