mcpField
S
sf-connected-apps

sf-connected-apps

github.com/jaganproセキュリティ4241.4k 回インストール26 週間前に更新
リポジトリ

sf-connected-apps について

sf-connected-appsは、SalesforceのConnected AppとExternal Client Appを設定するスキルで、OAuthフローとセキュリティ設定を扱います。開発者がアプリの種類を選び、スコープやコールバックを整え、デプロイ用メタデータを準備する際に役立ちます。

主な機能

  1. 01Connected AppとECAの設定
  2. 02OAuthフローの選択と設定
  3. 03スコープとコールバックURLの設計
  4. 04メタデータテンプレートの利用
  5. 05認証情報と証明書の扱いの確認

活用シーン

  1. 01自動化向けJWT認証の設定
  2. 02パブリッククライアント向けPKCEの設定
  3. 03統合のECAへの移行

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jaganpro/sf-skills --skill sf-connected-apps

インストール後、Claude Code で/sf-connected-appsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

CREDITS.md
LICENSE
README.md
assets/
connected-app-basic.xml
connected-app-canvas.xml
connected-app-jwt.xml
connected-app-oauth.xml
eca-global-oauth.xml
eca-oauth-settings.xml
eca-policies.xml
external-client-app.xml
references/
example-usage.md
migration-guide.md
oauth-flows-reference.md
security-checklist.md
testing-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/CDJWT Bearer
デバイス/CLI 認証Device Flow
サービスアカウント形式のアプリClient Credentials(通常は ECA)
3. 適切なテンプレートから始める

ゼロから作成するのではなく、提供されているアセットを使用します。

  • assets/connected-app-basic.xml
  • assets/connected-app-oauth.xml
  • assets/connected-app-jwt.xml
  • assets/external-client-app.xml
  • assets/eca-global-oauth.xml
  • assets/eca-oauth-settings.xml
  • assets/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を使用してください

出力形式

完了時には、次の順序で報告してください。

  1. 選択したアプリの種類
  2. 選択したOAuthフロー
  3. 作成または更新したファイル
  4. セキュリティ上の判断
  5. 次のデプロイ/テスト手順

推奨形式:

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アクセスガバナンス

参考資料一覧

まずはこちら
移行/例

スコアガイド

スコア意味
80以上本番環境で使用可能なOAuthアプリ設定
54~79使用可能ですが、セキュリティ強化のレビューが必要です
54未満修正が完了するまでデプロイを禁止してください

コメント