Skip to main content

外部クライアントアプリケーションを作成する

メモ

メモ

日本語で受講されている方へ
Challenge は日本語の Trailhead Playground で開始し、かっこ内の翻訳を参照しながら進めていってください。Challenge での評価は英語データを対象に行われるため、英語の値のみをコピーして貼り付けるようにしてください。日本語の組織で Challenge が不合格だった場合は、(1) この手順に従って [Locale (地域)] を [United States (米国)] に切り替え、(2) [Language (言語)] を [English (英語)] に切り替えてから、(3) [Check Challenge (Challenge を確認)] ボタンをクリックしてみることをお勧めします。

翻訳版 Trailhead を活用する方法の詳細は、自分の言語の Trailhead バッジを参照してください。

SFDX プロジェクトを作成する

環境が設定できたので、次は外部クライアントアプリケーションを作成します。そのためには、SFDX プロジェクトが必要です。

  1. コンピューター上のアプリケーションを作成する場所に ECA Metadata (ECA メタデータ) という名前のフォルダーを作成します。
  2. VS Code でこのフォルダーを開きます。
  3. VS Code の [Terminal (ターミナル)] を開いて、作成したフォルダーを表示します。
  4. [Terminal (ターミナル)] で次のコマンドを実行して、標準テンプレートを使って ecaViaMetadata という名前の Salesforce DX プロジェクトを作成します。
sf project generate --name ecaViaMetadata --template standard

Dev Hub 組織を承認する

接続アプリケーションを使って、コンピューター上の SFDX プロジェクトを Trailhead Playground Dev Hub に接続します。このステップではドメインが必要になります。[Setup (設定)] でドメインを検索するには、[Quick Find (クイック検索)] ボックスに My Domain (私のドメイン) と入力し、[My Domain (私のドメイン)] をクリックします。

  1. VS Code で、SFDX プロジェクトの ECA Metadata フォルダーを開きます。
  2. VS Code の [Terminal (ターミナル)] で次のコマンドを実行します。このとき、実行前に <my domain> を組織のドメインに置き換えてください。
sf org login web --set-default-dev-hub --alias ecaViaMetadata --instance-url https://<my domain>
  1. Web ベージが開いたら、Trailhead Playground のログイン情報でログインします。
  2. 組織へのアクセスを許可します。

外部クライアントアプリケーション用 SFDX プロジェクトを設定する

  1. VS Code で sfdx-project.json ファイルを開きます。
  2. ドメインの sfdcLoginUrl パラメーターを更新します。

[Setup (設定)] でドメインを検索するには、[Quick Find (クイック検索)] ボックスに My Domain (私のドメイン) と入力し、[My Domain (私のドメイン)] をクリックします。

  1. config という名前のディレクトリを展開し、スクラッチ組織定義ファイルを開きます。定義ファイルの名前は project-scratch-def.json です。機能設定に ExternalClientAppsExtlClntAppSecretExposeCtl を追加します。
	  "features": ["EnableSetPasswordInApi", "ExternalClientApps", "ExtlClntAppSecretExposeCtl"],

  1. プロジェクトディレクトリ内に package.xml マニフェストファイルを作成します。
  2. 次の内容を package.xml ファイルに追加します。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ExternalClientApplication</name>
    </types>
    <version>61.0</version>
</Package>
  1. force-app/main/default ディレクトリ内に externalClientApps という名前のフォルダーを作成します。
  2. externalClientApps フォルダーに ecaViaMetadata.eca-meta.xml という名前のファイルを追加します。これが外部クライアントアプリケーションのヘッダーファイルになります。

  1. 次の内容をヘッダーファイルに追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExternalClientApplication xmlns="http://soap.sforce.com/2006/04/metadata">
    <contactEmail>eca_metadata@example.com</contactEmail>
    <description>External client app Metadata API creation</description>
    <distributionState>Local</distributionState>
    <isProtected>false</isProtected>
    <label>ecaViaMetadata</label>
</ExternalClientApplication>

厳密には、以上で外部クライアントアプリケーションは完成です。このままこの設定をリリースすることもできます。その場合、Playground の外部クライアントアプリケーションマネージャーに基本の外部クライアントアプリケーションとして表示されます。ただし、有用なアプリケーションを作るには、プラグインが必要です。最初のモジュールで作成したものと同様の OAuth プラグインを設定しましょう。OAuth 2.0 Web サーバーフロー向けの OAuth プラグインを設定するには、いくつかの修正とファイルの新規作成が必要です。

OAuth プラグインを有効化して設定する

あらゆる設定が 1 つのファイルにまとめられた接続アプリケーションとは異なり、外部クライアントアプリケーションには、2 つの設定ファイルと 1 つのポリシーファイルが含まれます。グローバル OAuth 設定ファイルには、保護する必要がある OAuth コンシューマー鍵やコンシューマーの秘密などの機密項目が含まれます。OAuth 設定ファイルには、外部クライアントアプリケーションのより機密性が低い設定がすべて含まれます。Web サーバーフロー向けに外部クライアントアプリケーションを設定するにあたり、ポリシーファイルを作成する必要はありません。ポリシーは設定ファイルに基づいて設定されるためです。外部クライアントアプリケーションのリリース時に、OAuth ポリシーファイルが生成されます。

グローバル OAuth 設定ファイルを作成する

  1. force-app/main/default ディレクトリ内に extlClntAppGlobalOauthSets という名前のフォルダーを作成します。
  2. extlClntAppGlobalOauthSets フォルダーに ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml という名前のファイルを追加します。

  1. VS Code で ecaViaMetadataGlblOAuth.ecaGlblOauth-meta.xml を開き、次の内容を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExtlClntAppGlobalOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
    <callbackUrl>https://openidconnect.herokuapp.com/callback</callbackUrl>
    <externalClientApplication>ecaViaMetadata</externalClientApplication>
    <isConsumerSecretOptional>false</isConsumerSecretOptional>
    <isIntrospectAllTokens>false</isIntrospectAllTokens>
    <isPkceRequired>false</isPkceRequired>
    <isSecretRequiredForRefreshToken>true</isSecretRequiredForRefreshToken>
    <label>ecaViaMetadataglobalset</label>
    <shouldRotateConsumerKey>false</shouldRotateConsumerKey>
    <shouldRotateConsumerSecret>false</shouldRotateConsumerSecret>
</ExtlClntAppGlobalOauthSettings>
  1. グローバル OAuth 設定ファイルを保存します。

OAuth 設定ファイルを作成する

  1. force-app/main/default ディレクトリ内に extlClntAppOauthSettings という名前のフォルダーを作成します。
  2. extlClntAppOauthSettings フォルダーに ecaViaMetadataSettings.ecaOauth-meta.xml という名前のファイルを追加します。

  1. VS Code で ecaViaMetadataSettings.ecaOauth-meta.xml を開き、次の内容を追加します。
<?xml version="1.0" encoding="UTF-8"?>
<ExtlClntAppOauthSettings xmlns="http://soap.sforce.com/2006/04/metadata">
    <commaSeparatedOauthScopes>Api, Web, OpenID</commaSeparatedOauthScopes>
   <externalClientApplication>ecaViaMetadata</externalClientApplication>
    <label>ECA via Metadata Oauth Settings</label>
</ExtlClntAppOauthSettings>
  1. OAuth 設定ファイルを保存します。

ヘッダーファイルで設定ファイルを参照する

2 つの設定ファイルの作成が完了したので、続いてこれらのファイルを外部クライアントアプリケーションに組み込む必要があります。ヘッダーファイルは、外部クライアントアプリケーションを構成するすべてのファイルのリストです。

  1. package.xml マニフェストファイルを開きます。
  2. 3 つの OAuth ファイルそれぞれにエントリを追加します。
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>*</members>
        <name>ExternalClientApplication</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppOauthSettings</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppGlobalOauthSettings</name>
    </types>
    <types>
        <members>*</members>
        <name>ExtlClntAppOauthConfigurablePolicies</name>
    </types>
    <version>61.0</version>
</Package>
  1. package.xml マニフェストファイルを保存します。

外部クライアントアプリケーションをリリースする

これで外部クライアントアプリケーションが適切に設定されたので、続いてアプリケーションをリリースします。アプリケーションをリリースするとポリシーファイルが作成されるので、リリース後に外部クライアントアプリケーションを取得して、生成されたファイルを SFDX プロジェクトに取り込みます。

  1. 次のコマンドを実行して、外部クライアントアプリケーションをリリースします。このとき <username> を Dev Hub 承認時のログインに使用したユーザー名に置き換えます。
sf project deploy start --manifest package.xml --target-org <Username>
  1. Trailhead Playground から外部クライアントアプリケーションを取得します。このとき <username> を Dev Hub 承認時のログインに使用したユーザー名に置き換えます。
sf project retrieve start --manifest package.xml --target-org <username>

アプリケーションを検証する

外部クライアントアプリケーションが正常にリリースされてから、このアプリケーションを取得すると、SFDX プロジェクトにそれまではなかったポリシーファイルが表示されます。

また、外部クライアントアプリケーションマネージャーを開くと、ecaViaMetadata という名前の新規外部クライアントアプリケーションが表示されます。興味がある方は、[My Domain (私のドメイン)] と OAuth コンシューマー鍵および秘密を取得して、それをすべて OpenID Connect Playground に接続することで、一連の OAuth Web サーバーフローを確認できます。

リソース

Salesforce ヘルプで Trailhead のフィードバックを共有してください。

Trailhead についての感想をお聞かせください。[Salesforce ヘルプ] サイトから新しいフィードバックフォームにいつでもアクセスできるようになりました。

詳細はこちら フィードバックの共有に進む