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>'

    mTLSを使用したリクエストの例

    secureDomainURLの取得方法については、「アクセス権限タイプ」を参照してください。

    curl -v \
    --cert cert.crt \
    --key key.key \
    --cacert ca.crt \
    --location '<secureDomainURL>/oauth2/v1/token' \
    --header 'Authorization: Basic <base64Encoded clientid:secret>'
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'client_id=<client-id>' \
    --data-urlencode 'scope=urn:opc:idm:_myscopes_'
  2. クライアント・アプリケーションは、OAuth認可サーバーからアクセス・トークンをリクエストします。
  3. OAuth認可サーバー:
    1. TLSハンドシェイクの一部として送信された証明書に基づいて、クライアント・アプリケーションを認証します。
    2. リクエスト元のクライアント・アプリケーションに付与されたアプリケーション・ロールによって指定された権限に基づいて、適用可能なすべてのスコープを含むアクセス・トークンを返します。
  4. クライアント・アプリケーションは、アクセス・トークンを使用してリクエストを実行します。