sf-connected-apps について
sf-connected-appsは、SalesforceのConnected AppとExternal Client Appを設定するスキルで、OAuthフローとセキュリティ設定を扱います。開発者がアプリの種類を選び、スコープやコールバックを整え、デプロイ用メタデータを準備する際に役立ちます。
主な機能
- 01Connected AppとECAの設定
- 02OAuthフローの選択と設定
- 03スコープとコールバックURLの設計
- 04メタデータテンプレートの利用
- 05認証情報と証明書の扱いの確認
活用シーン
- 01自動化向けJWT認証の設定
- 02パブリッククライアント向けPKCEの設定
- 03統合のECAへの移行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jaganpro/ sf-skills --skill sf-connected-appsインストール後、Claude Code で/sf-connected-appsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CREDITS.mdLICENSEREADME.mdassets/connected-app-basic.xmlconnected-app-canvas.xmlconnected-app-jwt.xmlconnected-app-oauth.xmleca-global-oauth.xmleca-oauth-settings.xmleca-policies.xmlexternal-client-app.xmlreferences/example-usage.mdmigration-guide.mdoauth-flows-reference.mdsecurity-checklist.mdtesting-validation-guide.md詳細
sf-connected-apps:Salesforce 接続アプリと外部クライアントアプリ
Salesforce で OAuth アプリの設定が必要な場合に、このスキルを使用します。対象は、Connected App、External Client App(ECA)、JWT ベアラーの設定、PKCE の判断、スコープの設計、旧来の Connected App パターンから新しい ECA パターンへの移行です。
このスキルが担当するタスク
次の作業には sf-connected-apps を使用します。
.connectedApp-meta.xmlまたは.eca-meta.xmlファイル- OAuth フローの選択、コールバック/スコープの設定
- JWT ベアラー認証、デバイスフロー、クライアント認証情報、認可コードの判断
- Connected App と External Client App のアーキテクチャ選択
- コンシューマーキー/シークレット/証明書の取り扱い方針
次の場合は、ほかのスキルに委任してください。
- 名前付き認証情報または実行時コールアウトの設定 → sf-integration
- アクセス/権限ポリシーの割り当ての分析 → sf-permissions
- Apex でのトークン処理コードの作成 → sf-apex
- メタデータの組織へのデプロイ → sf-deploy
最初の判断:Connected App か External Client App か
| 要件 | 推奨 |
|---|---|
| 単一組織向けのシンプルな OAuth アプリ | Connected App |
| シークレットの取り扱いを改善した新規開発 | External Client App |
| 複数組織/パッケージ化/より強固な運用管理 | External Client App |
| 旧来の仕組みとのシンプルな互換性 | Connected App |
基本方針:
- 規制対応が必要なソリューション、パッケージ化可能なソリューション、自動化を多用するソリューションでは、ECA を選択します。
- シンプルさや旧来の仕組みとの互換性を重視する場合は、Connected App を選択します。
- Spring ’26 の注意事項:組織では新しい Connected App の作成がデフォルトで無効になっています。新しいインテグレーションでは、Connected App との互換性が明示的に必要な場合を除き、External Client App を優先してください。
最初に確認する必須コンテキスト
次の情報を尋ねるか、推定します。
- アプリの種類:Connected App または ECA
- OAuth フロー:認可コード、PKCE、JWT ベアラー、デバイス、クライアント認証情報
- クライアントの種類:機密クライアントかパブリッククライアントか
- コールバック URL/リダイレクト先
- 必要なスコープ
- 配布モデル:ローカル組織のみか、パッケージ化/複数組織対応か
- 証明書またはシークレットのローテーションが必要かどうか
推奨ワークフロー
1. アプリのモデルを選択する
Connected App と ECA のどちらが長期的に適しているかを判断します。
2. OAuth フローを選択する
| ユースケース | デフォルトのフロー |
|---|---|
| バックエンドの Web アプリ | Authorization Code |
| SPA/モバイル/パブリッククライアント | Authorization Code + PKCE |
| サーバー間通信/CI/CD | JWT Bearer |
| デバイス/CLI 認証 | Device Flow |
| サービスアカウント形式のアプリ | Client Credentials(通常は ECA) |
3. 適切なテンプレートから始める
ゼロから作成するのではなく、提供されているアセットを使用します。
assets/connected-app-basic.xmlassets/connected-app-oauth.xmlassets/connected-app-jwt.xmlassets/external-client-app.xmlassets/eca-global-oauth.xmlassets/eca-oauth-settings.xmlassets/eca-policies.xml
ソース管理対象の ECA OAuth セキュリティメタデータが必要な場合は、まず組織から取得し、取得したファイルをスキーマの信頼できる情報源として扱います。
sf project retrieve start --metadata ExtlClntAppOauthSecuritySettings:<AppName> --target-org <alias>
4. セキュリティを強化する
次を優先します。
- 最小権限のスコープ
- 明示的なコールバック URL
- パブリッククライアントでの PKCE
- 適切な場合は証明書ベースの認証
- ローテーションに対応したシークレット/キーの取り扱い
- 現実的で保守可能な場合は IP 制限
5. デプロイの準備状況を検証する
引き継ぎの前に、次を確認します。
- メタデータファイル名が正しい
- スコープに妥当な理由がある
- コールバックと認証モデルが実際のクライアントの種類に合っている
- シークレットがソースに埋め込まれていない
セキュリティ上の重要なルール
次のアンチパターンを避けてください。
| アンチパターン | 問題点 |
|---|---|
| ワイルドカード/範囲が広すぎるコールバック URL | トークン傍受のリスク |
デフォルトでFullスコープを使用する | 不要な権限 |
| パブリッククライアントでPKCEを無効にする | 認可コード傍受のリスク |
| コンシューマーシークレットをソースにコミットする | 認証情報の漏えい |
| 自動化のためのローテーション/証明書戦略がない | 長期運用が不安定になる |
デフォルトの修正方針:
- スコープを限定する
- コールバックを制限する
- パブリッククライアントでPKCEを有効にする
- シークレットをバージョン管理の対象外にする
- 適切な場合はJWT証明書または管理されたシークレットストレージを使用する
重要なメタデータに関する注意
接続済みアプリ
通常、次の場所にあります。
force-app/main/default/connectedApps/
外部クライアントアプリ
現在のソースでサポートされているECAメタデータは、単一のexternalClientApps/フォルダーではなく、複数のトップレベルソースディレクトリを使用します。
force-app/main/default/externalClientApps/→ExternalClientApplication(.eca-meta.xml)force-app/main/default/extlClntAppGlobalOauthSets/→ExtlClntAppGlobalOauthSettings(.ecaGlblOauth-meta.xml)force-app/main/default/extlClntAppOauthSettings/→ExtlClntAppOauthSettings(.ecaOauth-meta.xml)force-app/main/default/extlClntAppOauthSecuritySettings/→ExtlClntAppOauthSecuritySettings(.ecaOauthSecurity-meta.xml)force-app/main/default/extlClntAppOauthPolicies/→ExtlClntAppOauthConfigurablePolicies(.ecaOauthPlcy-meta.xml)force-app/main/default/extlClntAppPolicies/→ExtlClntAppConfigurablePolicies(.ecaPlcy-meta.xml)
ファイル名に関する重要な注意点:
- グローバルOAuthのサフィックスは
.ecaGlobalOauthではなく.ecaGlblOauthです - 一般ポリシーのサフィックスは
.ecaPolicyではなく.ecaPlcyです ExtlClntAppOauthSecuritySettingsには.ecaOauthSecurityを使用してください
出力形式
完了時には、次の順序で報告してください。
- 選択したアプリの種類
- 選択したOAuthフロー
- 作成または更新したファイル
- セキュリティ上の判断
- 次のデプロイ/テスト手順
推奨形式:
App: <name>
Type: Connected App | External Client App
Flow: <oauth flow>
Files: <paths>
Security: <scopes, PKCE, certs, secrets, IP policy>
Next step: <deploy, retrieve consumer key, or test auth flow>
スキル間の連携
| 必要な作業 | 委任先 | 理由 |
|---|---|---|
| 名前付き認証情報/コールアウトのランタイム設定 | sf-integration | ランタイム統合の設定 |
| アプリのメタデータをデプロイする | sf-deploy | 組織での検証とデプロイ |
| Apexのトークンまたは更新処理 | sf-apex | 実装ロジック |
| デプロイ後の権限レビュー | sf-permissions | アクセスガバナンス |
参考資料一覧
まずはこちら
- references/oauth-flows-reference.md
- references/security-checklist.md
- references/testing-validation-guide.md
移行/例
スコアガイド
| スコア | 意味 |
|---|---|
| 80以上 | 本番環境で使用可能なOAuthアプリ設定 |
| 54~79 | 使用可能ですが、セキュリティ強化のレビューが必要です |
| 54未満 | 修正が完了するまでデプロイを禁止してください |