TLSクライアント認証権限付与タイプ
認可スコープがクライアントの制御下の保護リソースに、またはOAuth認可サーバーに登録されたリソースを保護する場合、Transport Layer Security (TLS)権限付与タイプを使用します。
次の図は、TLSクライアント認証権限付与タイプのフローを示しています。
前提条件:クライアント証明書をクライアント証明書ストアにアップロードします。
- TLSハンドシェイクの一部として、クライアント・アプリケーションは独自の証明書とクライアントIDを提示してアクセス・トークンを取得します。ノート: この証明書は、クライアント証明書ストアの証明書と一致する必要があります。
- このリクエストされたアクセス・トークンは、(特定のリソース所有者ではなく)クライアントの独自のリソースに関連付けられているか、それ以外の場合は、クライアント・アプリケーションの動作が認可されているリソース所有者と関連付けられています。
- 認証サーバーは、証明書の検証に成功した後にのみ、アクセス・トークンをクライアント・アプリケーションに返します。
- クライアント・アプリケーションは、APIコールでアクセス・トークンを使用して、アプリケーションを更新します。
| 機能 | 使用可能 |
|---|---|
| クライアント認証が必要 | はい |
| クライアントがユーザー資格証明を認識する必要があります。 | いいえ |
| ブラウザベースのエンド・ユーザーとの対話 | いいえ |
| 認証のために外部アイデンティティ・プロバイダの使用が可能 | いいえ |
| リフレッシュ・トークンを許可 | いいえ |
| アクセス・トークンがクライアント・アプリケーションのコンテキスト内 | はい |
フローの例は、「TLSクライアント認証権限付与タイプの認可フローの例」を参照してください。
TLSクライアント認証権限付与タイプの認可フローの例
Transport Layer Security (TLS)クライアント認証権限付与タイプは、リソース所有者が関与しない特定の権限付与フローを提供します。このシナリオでは、クライアント・アプリケーションは、バッチ・プロセスやサーバー間タスクなど、リソース所有者が関与していないプロセスを実行しています。
この権限付与タイプを使用する場合、クライアント・アプリケーションは、クライアントIDとともに独自の証明書(クライアント・プロファイルにアップロードされる証明書)を持つアクセス・トークンをリクエストし、クライアント・アプリケーション自体のかわりにアクセス・トークンを使用します。この付与フローは、メンテナンス用のAPIメソッドなどの特定のリソース所有者に適用されるAPIメソッドのかわりに、クライアント・アプリケーションによって一般的に使用される一部のAPIメソッドがサービス・プロバイダが提供する必要がある場合に最適です。
- アプリケーション・タイプとして機密アプリケーションを指定します。モバイル/ブラウザ・アプリケーションにはクライアント証明書がなく、TLSクライアント認証権限付与タイプを使用できません。
- 付与タイプとして「TLSクライアント認証」を選択します。
- 「クライアント・タイプ」として「信頼済」または「機密」を選択します。
- 「クライアント証明書」をインポートします。この証明書は、トークン・リクエストの検証に使用されます。ノート:クライアントは、トークン・リクエストでこの同じ証明書を使用する必要があります。
TLSクライアント認証権限付与タイプおよび認可フロー・ダイアグラムの詳細は、「TLSクライアント認証権限付与タイプ」を参照してください。
-
クライアントが開始したイベント(スケジュール済タスクなど)は、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_' - クライアント・アプリケーションは、OAuth認可サーバーからアクセス・トークンをリクエストします。
- OAuth認可サーバー:
- TLSハンドシェイクの一部として送信された証明書に基づいて、クライアント・アプリケーションを認証します。
- リクエスト元のクライアント・アプリケーションに付与されたアプリケーション・ロールによって指定された権限に基づいて、適用可能なすべてのスコープを含むアクセス・トークンを返します。
- クライアント・アプリケーションは、アクセス・トークンを使用してリクエストを実行します。