この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

JWT ベアラーフローを使用した組織の認証

継続的インテグレーション (CI) 環境は完全に自動化されており、OAuth 2.0 Web サーバ認証フローのユーザインタラクションはサポートされていません。これらの環境では、JSON Web トークン (JWT) ベアラーフローを使用して組織を認証する必要があります。

JWT ベアラー認証フローでは、JWT 要求に署名するためのデジタル証明書 (デジタル署名ともいう) が必要です。独自の証明書を使用するか、OpenSSL を使用して自己署名証明書を作成できます。このフローでは、明示的なユーザ操作は不要です。ただし、このフローには、クライアントアプリケーションの事前承認が必要です。「サーバ間インテグレーション用の OAuth 2.0 JWT ベアラーフロー」を参照してください。

Dev Hub 組織で高保証 (強化) 認証が設定されている場合は、ユーザに ID の検証が求められます。この検証プロセスがあるため、JWT ベアラーフローや Salesforce CLI によるヘッドレス認証は使用できません。

重要

  1. 独自の非公開鍵とデジタル証明書がない場合は、OpenSSL を使用して鍵と自己署名証明書を作成します。
    このタスクでは、非公開鍵ファイルの名前が server.key で、デジタル証明書の名前が server.crt であることを前提としています。
  2. 接続アプリケーションを作成して Salesforce DX 用に設定します
    このタスクには、server.crt デジタル証明書ファイルのアップロードが含まれます。後で必要になるため、接続アプリケーションの保存時にコンシューマ鍵を書き留めておきます。
  3. 認証する組織が https://login.salesforce.com でホストされていない場合、プロジェクトの設定ファイル (sfdx-project.json) を更新します。
    sfdcLoginUrl パラメータをこのログイン URL に設定します。他のログイン URL の例として、カスタムサブドメインや Sandbox 用の https://test.salesforce.com などが挙げられます。次に例を示します。

    ログイン URL に [My Domain (私のドメイン)] サブドメインを指定する場合、Lightning Experience に表示される URL (.lightning.force.com) ではなく、my.salesforce.com で終わるバージョンを使用します。有効な [My Domain (私のドメイン)] URL を検証するには、[Setup (設定)] から [Quick Find (クイック検索)] ボックスに「My Domain」と入力し、[My Domain (私のドメイン)] を選択します。

    重要

    または、auth:jwt:grant コマンドの --instanceurl パラメータを使用して URL を指定できます。この値によって、sfdx-project.json ファイルに指定したログイン URL が上書きされます。例については、次のステップを参照してください。

  4. auth:jwt:grant CLI コマンドを実行します。
    接続アプリケーションのクライアント ID (コンシューマ鍵とも呼ばれる)、非公開鍵ファイル (server.key) へのパス、および JWT 認証ユーザ名を指定します。Dev Hub 組織を認証するときに --setdefaultdevhubusername パラメータでデフォルトに設定します。次に例を示します。
    次の例は、--instanceurl パラメータを使用して、デフォルトの https://login.salesforce.com ではなく、https://test.salesforce.com でホストされている組織を指定する方法を示しています。

    スクラッチ組織は、それに関連付けられている Dev Hub 組織の認証に使用したものと同じクライアント ID (コンシューマ鍵) と非公開鍵ファイルを使用して認証できます。--instanceurl パラメータを https://test.salesforce.com--username パラメータをスクラッチ組織の作成後に表示される管理者ユーザに設定します。

スクラッチ組織の認証

OAuth 2.0 JWT ベアラー認証フローをサポートするように Dev Hub を設定した場合、同じデジタル証明書と非公開鍵を使用して関連付けられたスクラッチ組織を認証できます。この方法は、スクラッチ組織を作成後に認証する必要があるものの、スクラッチ組織のアクセストークンへのアクセス権がない継続的インテグレーション (CI) システムで使用すると便利です。
このタスクには、次の前提条件があります。
  • すでに JWT ベアラーフローを使用して Dev Hub 組織を認証した。
  • Dev Hub 組織の認証時に使用した非公開鍵ファイルがアクセス可能で、/Users/jdoe/JWT/server.key にある。
  • スクラッチ組織を作成済みで、その管理者ユーザ名 (例: test-wvkpnfm5z113@example.com) が手元にある。
  1. Dev Hub 組織で作成した接続アプリケーションからコンシューマ鍵をコピーします。
    1. Dev Hub 組織にログインします。
    2. [設定] から、[クイック検索] ボックスに「アプリケーションマネージャ」と入力し、Lightning Experience アプリケーションマネージャに移動します。
    3. アプリケーションリストで接続アプリケーションを見つけ、アクションドロップダウン をクリックし、[表示] を選択します。
    4. API ([OAuth 設定の有効化]) セクションで、[コンシューマの詳細を管理] をクリックし、ID を確認します。
    5. コンシューマ鍵をクリップボードにコピーします。コンシューマ鍵は、3MVG9szVa2Rx_sqBb444p50Yj のように、数値と文字で構成される長い文字列です (この例は明確化のために短縮されています)。
  2. auth:jwt:grant CLI コマンドを実行します。--clientid および --jwtkeyfile パラメータ値は、Dev Hub 組織を認証するためコマンドを実行したときと同じです。--username をスクラッチ組織の管理者ユーザ名、--instanceurlhttps://test.salesforce.com に設定します。次に例を示します。
    ユーザが承認されていないというエラーが発生した場合、スクラッチ組織情報がまだ https://test.salesforce.com に複製されていないことを示します。しばらく待ってから再試行してください。