TLSクライアント認証権限付与タイプ

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

次のダイアグラムに、TLSクライアント認証付与タイプのフローを示します。

TLSクライアント認証権限付与タイプを示す図。
このOAuthフロー:
ノート

前提条件:クライアント証明書をクライアント証明書ストアにアップロードします。
  1. TLSハンドシェイクの一部として、クライアント・アプリケーションは独自の証明書とクライアントIDを提示してアクセス・トークンを取得します。ノート: この証明書は、クライアント証明書ストアの証明書と一致する必要があります。
  2. このリクエストされたアクセス・トークンは、特定のリソース所有者ではなく、クライアントの独自のリソースに関連付けられているか、それ以外の場合は、クライアント・アプリケーションの実行が認可されているリソース所有者に関連付けられています。
  3. 認証サーバーは、証明書の検証が成功した後にのみ、アクセス・トークンをクライアント・アプリケーションに戻します。
  4. クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、アプリケーションを更新します。
機能 選択可能
クライアントの認証が必要 はい
ユーザー資格証明をクライアントに認識させる必要があります。 いいえ
ブラウザベースのエンド・ユーザーとの対話 いいえ
認証のために外部アイデンティティ・プロバイダの使用が可能 いいえ
リフレッシュ・トークンを許可 いいえ
アクセス・トークンがクライアント・アプリケーションのコンテキスト内 はい

フローの例については、TLSクライアント認証付与タイプの認可フローの例を参照してください。

TLSクライアント認証付与タイプの認可フローの例

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

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

アイデンティティ・ドメイン・コンソールでTLSクライアント認証付与タイプを使用してアプリケーションを作成する場合:
  • アプリケーション・タイプとして「機密アプリケーション」を指定します。モバイル/ブラウザ・アプリケーションにはクライアント証明書がなく、TLSクライアント認証付与タイプを使用できません。
  • 付与タイプとして「TLSクライアント認証」を選択します。
  • 「クライアント・タイプ」として「信頼済」または「機密」を選択します。
  • 「クライアント証明書」をインポートします。この証明書は、トークン・リクエストの検証に使用されます。ノート:クライアントは、トークン・リクエストでこの同じ証明書を使用する必要があります。

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

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

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

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

    cacert.crtは、このTLSのサーバーの証明書に署名したCA証明書です。

    client.keyは、クライアント秘密キーです。

    client.crtは、クライアント証明書です。

       curl -i
       --cacert cacert.crt --key client.key --cert client.crt
       -H 'Content-Type: application/x-www-form-urlencoded;charset=UTF-8'
       --request POST https://<domainURL>/oauth2/v1/token 
       -d 'grant_type=tls_client_auth&client_id=<client ID>&scope=<scope value>'
  2. クライアント・アプリケーションは、OAuth認可サーバーからアクセス・トークンをリクエストします。
  3. OAuth認可サーバー:
    1. TLSハンドシェイクの一部として送信された証明書に基づいてクライアント・アプリケーションを認証します。
    2. リクエストしているクライアント・アプリケーションに付与されたアプリケーション・ロールによって指定された権限に基づいて、適用可能なすべてのスコープを含むアクセス・トークンを返します。
  4. クライアント・アプリケーションは、アクセス・トークンを使用してリクエストを実行します。