sf-connected-apps
OAuth フローや JWT ベアラー認証、Connected Apps の設定を行う際に使用するスキルで、`.connectedApp-meta.xml` や `.eca-meta.xml` ファイルの操作時にもトリガーされます。120点満点のスコアリングによって Salesforce Connected Apps と OAuth 設定の品質を評価します。なお、外部連携の Named Credentials には `sf-integration`、権限ポリシーには `sf-permissions`、APIエンドポイントのコードには `sf-apex` をそれぞれ使用してください。
description の原文を見る
> Salesforce Connected Apps and OAuth configuration with 120-point scoring. TRIGGER when: user configures OAuth flows, JWT bearer auth, Connected Apps, or touches .connectedApp-meta.xml / .eca-meta.xml files. DO NOT TRIGGER when: Named Credentials for callouts (use sf-integration), permission policies (use sf-permissions), or API endpoint code (use sf-apex).
SKILL.md 本文
sf-connected-apps: Salesforce Connected Apps & External Client Apps
このスキルは、ユーザーが Salesforce で OAuth アプリケーション設定 を必要とする場合に使用します: Connected Apps、External Client Apps (ECAs)、JWT bearer セットアップ、PKCE 判断、スコープ設計、または古い Connected App パターンから新しい ECA パターンへの移行。
このスキルがタスクを担当する場合
以下の作業に sf-connected-apps を使用します:
.connectedApp-meta.xmlまたは.eca-meta.xmlファイル- OAuth フロー選択とコールバック / スコープ設定
- JWT bearer 認証、デバイスフロー、クライアント認証情報、または認可コード判定
- Connected App と External Client App のアーキテクチャ選択
- consumer-key / secret / 証明書処理戦略
以下の場合は他のスキルに委譲します:
- Named Credentials またはランタイムコールアウト設定 →
sf-integration - アクセス / パーミッションポリシー割り当て分析 →
sf-permissions - Apex トークン処理コード作成 →
sf-apex - メタデータを org にデプロイ →
sf-deploy
最初の判断: Connected App か External Client App か
| 必要なものが... | 推奨 |
|---|---|
| シンプルな単一 org OAuth アプリ | Connected App |
| より優れたシークレット処理による新規開発 | External Client App |
| マルチ org / パッケージング / より強力な運用管理 | External Client App |
| シンプルなレガシー互換性 | Connected App |
デフォルトガイダンス:
- 規制対象、パッケージ化可能、またはオートメーション集約的なソリューションには ECA を選択
- シンプルさとレガシー互換性がより重要な場合には Connected App を選択
- Spring '26 注: 新しい Connected Apps の作成はデフォルトで多くの org で無効化されています。新規統合の場合は、Connected App 互換性が明示的に必要でない限り External Client Apps を推奨します。
最初に収集すべき必須コンテキスト
以下を質問するか推論します:
- アプリタイプ: Connected App または ECA
- OAuth フロー: 認可コード、PKCE、JWT bearer、デバイス、クライアント認証情報
- クライアントタイプ: 機密 vs 公開
- コールバック URL / リダイレクト先
- 必要なスコープ
- 配布モデル: ローカル org のみ vs パッケージ化 / マルチ org
- 証明書またはシークレット回転が必要かどうか
推奨ワークフロー
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 セキュリティメタデータが必要な場合は、最初に org から取得し、取得したファイルをスキーマの信頼できるソースとして扱います:
sf project retrieve start --metadata ExtlClntAppOauthSecuritySettings:<AppName> --target-org <alias>
4. セキュリティ強化を適用
以下を優先:
- 最小権限スコープ
- 明示的なコールバック URL
- 公開クライアント向け PKCE
- 必要に応じて証明書ベース認証
- 回転対応のシークレット / キー処理
- 現実的で保守可能な場合の IP 制限
5. デプロイ準備状況を検証
ハンドオフ前に以下を確認:
- メタデータファイル命名が正しい
- スコープが正当化されている
- コールバックと認証モデルが実際のクライアントタイプと一致
- シークレットがソースに埋め込まれていない
高シグナルセキュリティルール
これらのアンチパターンを回避:
| アンチパターン | 失敗理由 |
|---|---|
| ワイルドカード / 過度に広いコールバック URL | トークン傍受リスク |
デフォルトで Full スコープ | 不要な権限 |
| 公開クライアント向け PKCE 無効化 | コード傍受リスク |
| ソースにコンシューマーシークレットをコミット | 認証情報漏洩 |
| オートメーション用に回転 / 証明書戦略なし | ぜい弱な長期運用 |
デフォルト修正方向:
- スコープを狭める
- コールバックを制限
- 公開クライアント向けに PKCE を有効化
- シークレットをバージョン管理外に保つ
- 必要に応じて JWT 証明書または管理されたシークレットストレージを使用
重要なメタデータ注記
Connected App
通常は以下にあります:
force-app/main/default/connectedApps/
External Client App
現在のソース対応 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 サフィックスは
.ecaGlblOauthで、.ecaGlobalOauthではありません - 一般的なポリシーサフィックスは
.ecaPlcyで、.ecaPolicyではありません 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>
スキル間統合
| 必要な場合 | 委譲先 | 理由 |
|---|---|---|
| Named Credential / コールアウトランタイム設定 | sf-integration | ランタイム統合セットアップ |
| アプリメタデータをデプロイ | sf-deploy | org 検証およびデプロイ |
| Apex トークンまたはリフレッシュ処理 | sf-apex | 実装ロジック |
| デプロイ後のパーミッション確認 | sf-permissions | アクセス管理 |
リファレンスマップ
ここから開始
references/oauth-flows-reference.mdreferences/security-checklist.mdreferences/testing-validation-guide.md
移行 / 例
references/migration-guide.mdreferences/example-usage.mdassets/
スコアガイド
| スコア | 意味 |
|---|---|
| 80+ | 本番環境対応の OAuth アプリ設定 |
| 54–79 | 実用的だがセキュリティ強化レビューが必要 |
| < 54 | 修正まで展開をブロック |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- jaganpro
- リポジトリ
- jaganpro/sf-skills
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/jaganpro/sf-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。