クライアント資格証明権限付与タイプ

認可スコープがクライアントの制御下の保護リソースに制限されている場合、またはOAuth認可サーバーに登録された保護リソースに制限されている場合、この付与タイプを使用します。

次のダイアグラムに、クライアント資格証明権限付与タイプのフローを示します。

クライアント資格証明権限付与タイプのフローを示す図。

このOAuthフロー:

  1. クライアントが開始したイベント(モバイル・デバイス上のアプリケーションのスケジュール済バックグラウンド更新など)は、OAuthクライアント・アプリケーションから保護されているリソースへのアクセスをリクエストします。

  2. クライアント・アプリケーションは、独自の資格証明を提示してアクセス・トークン(多くの場合、リフレッシュ・トークン)を取得します。このアクセス・トークンは、特定のリソース所有者ではなく、クライアント自体のリソースに関連付けられているか、それ以外の場合は、クライアント・アプリケーションの実行が認可されているリソース所有者に関連付けられています。

  3. 認可サーバーは、クライアント・アプリケーションにアクセス・トークンを返します。

  4. クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、デバイス上のアプリケーションを更新します。

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

フローの例は、クライアント資格証明権限付与タイプの認可フローの例を参照してください。

クライアント資格証明権限付与タイプの認可フローの例

クライアント資格証明付与タイプには固有の付与フローがあり、これには、リソース所有者が関与しません。このシナリオ例では、クライアント・アプリケーションは、リソース所有者が関与しないプロセス(バッチ・プロセス、サーバー間タスクなど)を実行しています。

この付与を使用する場合、クライアント・アプリケーションが独自の資格証明(IDとシークレット)またはアサーションでアクセス・トークンをリクエストし、クライアント・アプリケーション自体のかわりにアクセス・トークンを使用します。この付与フローは、メンテナンス用のAPIメソッドなど、特定のリソース所有者に適用されるメソッドのかわりに、クライアント・アプリケーションによって一般的に使用される一部のAPIメソッドをサービス・プロバイダが提供する必要がある場合に最適です。

アイデンティティ・ドメイン・コンソールでクライアント資格証明付与タイプを使用してアプリケーションを作成する場合:

  • 「信頼できるアプリケーション」をアプリケーション・タイプとして指定します。これは、モバイル/ブラウザ・アプリケーションにはクライアント・シークレットがなく、クライアント資格証明権限付与を使用できないためです。

  • 権限付与タイプとして「Client Credentials」を選択します。

クライアント資格証明付与タイプおよび認可フロー・ダイアグラムの詳細は、クライアント資格証明付与タイプを参照してください。

承認フロー

  1. クライアントが開始したイベント(スケジュール済タスクなど)は、OAuthクライアント・アプリケーションから保護されているリソースへのアクセスをリクエストします。

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

    認可ヘッダーを使用したリクエストの例

       curl -i
       -H 'Authorization: Basic <base64Encoded clientid:secret>'
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=client_credentials&scope=<scope value>'

    JWTクライアント・アサーションを使用したリクエストの例

       curl -i
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=client_credentials&client_id=<client-id>&client_assertion_type=urn%3Aietf%3Aparams%3Aoauth%3Aclient-assertion-type%3Ajwt-bearer&client_assertion=<client-assertion>&scope=<scope value>'
  2. クライアント・アプリケーションは、OAuth認可サーバーからアクセス・トークンをリクエストします。
  3. OAuth認可サーバーは、送信された認可ヘッダーまたはアサーションに基づいてクライアント・アプリケーションを認証し、リクエスト側クライアント・アプリケーションに付与されたアプリケーション・ロールで示される権限に基づいて適用可能なすべてのスコープを含むアクセス・トークンを返します。
  4. クライアント・アプリケーションは、アクセス・トークンを使用してリクエストを実行します。