make-app-auth について
make-app-auth は Make App の認証と、認証済みの Make API アクセスを扱うスキルです。生成・公開済み App の開発者向けに、@qfeius/make-app-auth SDK、統合ログイン、セッション処理、安全なリクエスト経路を案内します。
主な機能
- 01@qfeius/make-app-auth SDK の統合
- 02統合ログインとログアウトのフロー
- 03認証済み Make API リクエストのルーティング
- 04401・403・セッション期限切れへの対応
- 05Service 経由の認証・OAuth プロキシ規約
活用シーン
- 01Make App の統合ログイン設定
- 02認証アダプター経由での業務 API 呼び出し
- 03アクセス拒否や期限切れセッションへの対応
- 04Service 経由 App の認証動作の検証
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ qfeius/ make-platform-skills --skill make-app-authインストール後、Claude Code で/make-app-authを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/access-help.mdlogout-and-401.mdrequest-adapter.mdsdk-integration.mdservice-fronted-mode.mdservice-fronted-node-example.mdtroubleshooting.mdunified-login-mode.mdscripts/audit-auth-contract.mjscurrent-context-conformance-suite.mjstest-audit-auth-contract.mjstest-current-context-conformance-suite.mjs詳細
make-app-auth
禁止されたページや 403 ハンドラーを変更する前に、references/access-help.md を読んでください。拒否ペイロードとスコープを保持してください。現在の App 管理者向けヘルプを独立して提供しても、業務アクセスが許可されるわけではありません。React のフィードバックでは、makeui/references/permission-feedback.md に記載された検証済みパッケージを使用してください。認証処理で拒否ページをレンダリングしたり、スタイルを設定したりすることはありません。
管理者の検索は、段階的なリリースにおける任意の拡張機能です。SDK メソッドが存在しない場合やエンドポイントがデプロイされていない場合は、ログインや App の準備状態に関するエラーではなく、一般的な認可ガイダンスを維持してください。既存の認証/IAM 要件は引き続き適用されます。
起動時の拒否判定と業務リクエストの拒否判定は分離してください。auth.init() が status: 'forbidden' を返した場合、payload.reason がなくても App エントリーのフィードバックをレンダリングします。request-adapter.md の業務リクエスト判定器を、追加のブートストラップゲートとして再利用してはいけません。references/sdk-integration.md#startup-shape を参照してください。
Make App の認証と、認証済み Make API へのアクセスには、このスキルを使用してください。
スコープ
このスキルでは、以下を扱います。
@qfeius/make-app-authSDK の統合- 生成/公開された Make App のデフォルト認証モードとしての統合ログイン
- 統合ログイン、OAuth、SSO、ngrok、Cookie、ログアウト、コールバックのテスト
- Make ゲートウェイ
/api/make/**への認証済み直接リクエスト - デプロイされた App Service プレフィックス配下での、Service 経由の公開済み App 認証(通常は
/api/make/auth/**) - 401、403、ログアウトの動作
- アカウント画面に必要な、現在のコンテキストの ID 正規化とホストランタイムシグナル
- Cookie、セッション、リダイレクト、コールバックのトラブルシューティング
このスキルでは、以下を扱いません。
- UI レイアウト、コンポーネント設計、Make App のページ構成。
makeuiを使用してください。 - Service のビルド出力、パッケージング、イメージのエントリーポイント、公開時のランタイム準備状態。
make-app-runtimeを使用してください。 - ランタイムスキーマの正規化、オブジェクトフィールドのマッピング、テーブルのレンダリング、空白ページの診断、業務データの正確性。
makeuiとホストアプリのテストを使用してください。 - DSL のモデリングや Make リソースの定義。
makedslを使用してください。 - makecli コマンドの実行。
makecliを使用してください。 - make-gateway または Org サーバーの実装変更。
- 単一 App の権限適用。
make-app-permissionを使用してください。
デフォルトの動作
生成および公開される Make App では、unifiedLogin: true、apiAuthRedirect: true、auth.init({ redirect: true }) を使用した統合ログインをデフォルトとします。
このスキルでサポートするのは、生成およびレビュー対象の Make App における統合ログインのみです。統合ログインの前提条件が満たされていない場合はブロッカーとして扱い、別のモードに切り替える理由にしてはいけません。このスキルから、ブラウザートークンモード、モックモード、ログインを回避する方法を生成してはいけません。
ローカルプレビューの例外:Service 経由の App では、MAKE_APP_LOCAL_PREVIEW=true で保護された、Service 専用のローカルプレビューアダプターを提供できます。このフラグは、MAKE_APP_LOCAL_PREVIEW=true corepack pnpm run dev やプロジェクト管理の dev:preview スクリプトなど、ローカル開発コマンドから一時的なプロセス環境変数として設定する場合に限り有効にしてください。新しい Make App と明示的なランタイム移行では、make-app-runtime のベースライン(Node.js 22.20.0、Corepack 0.34.0、および Corepack 経由の [email protected])を使用してください。既存の App では、認証作業中も宣言済みのランタイムを維持してください。このフラグを .env、.env.local、.env.example、生成される README のセットアップ手順、デプロイ環境に保存してはいけません。アダプターは makecli configure resolve --target local-preview --output=json を使用して実効的な公開 Make オリジンを解決し、make_api_origin を取得して、ブラウザー向けの /api/make スコープを追加し、Service から Make へのリクエストにのみトークンを付与してください。UI にトークンを公開してはいけません。公開時の統合ログインの契約を変更してはいけません。また、本番環境ではフェイルクローズにしてください。
厳守事項
- 必ず
@qfeius/make-app-authを使用し、認証実装を別途フォークしないでください。 - Make バックエンドへのゲートウェイ直通のビジネスリクエストは、
/api/make/**配下でauth.apiを経由する必要があります。 - 通常のフロントエンドからの Make バックエンドリクエストは、スキーマ/メタデータ、レコードの CRUD、通常のファイル/ルックアップ/ユーザー/部署のリクエストを含め、
auth.apiを経由します。固定された Make App AI v1 の/clientコントラクトは限定的な例外です。このAuthenticatedTransportには、202/204、SSE、ファイルのバイトデータに対応する HTTP ステータス、ヘッダー、未加工のAsyncIterable<Uint8Array>が必要ですが、auth.apiではこれらを公開していません。このブリッジは共有認証アダプター内の同一オリジン/api/make/app/ai/v1/**に限って実装し、統合ログインの Cookie 処理を維持したうえで、正確な適用範囲とライフサイクルについてはmake-ai-assistantに従ってください。これは、他の/api/make/**呼び出しに汎用の raw fetch を使うことを許可するものではありません。 - 生成する App では、Make バックエンドへのアクセスを
auth.apiでラップする共有 API アダプターまたはデータソース層に集約する必要があります。 - 新しい Make App の共有認証ビジネスリクエストアダプターでは、
make-app-observabilityの Trace ID コントラクトを適用する必要があります。トークンを公開したり、統合ログインの動作を変更したりせずに、traceparentと対応するX-Log-Idを送信してください。認証の管理はここが担い、Trace の生成、伝播、エラー表示はmake-app-observabilityが担います。 - Service 経由の App では、
UI -> Service -> make-gatewayのコントラクトを維持してください。UI からメタデータ/データ呼び出しを迂回してはいけません。 - Service 経由の App では、既定の権限呼び出しについてもこのコントラクトを維持してください。UI は
auth.api("/app/principal/permission")を使用し、シングル App の権限動作はmake-app-permissionが担います。 - Service 経由で公開する App の UI では、
gatewayBaseUrl: "/api/make"を使用します。UI がauth.api("/app/**")を呼び出すと、ブラウザーからのリクエストは/api/make/app/**になります。認証の初期化と OAuth コールバックは/api/make/auth/**および/api/make/oauth/**配下に維持してください。このモードで/api/auth/**、/api/oauth/**、またはgatewayBaseUrl: "/api"を生成してはいけません。 - UI コンポーネントや通常の Make ビジネス API で、
window.fetch('/api/make/...')を直接あちこちに記述しないでください。上記の AI v1AuthenticatedTransportブリッジだけが、レスポンスを直接扱う唯一の例外です。任意のオリジン/スコープは拒否し、App コードからブラウザーのトークンや Cookie を読み取ってはいけません。 Authorizationを手動で記述しないでください。<img src>、<object data>、通常の<a href>などのブラウザーリソースリクエストでは、カスタムのAuthorizationヘッダーを付加できません。Make ファイルのダウンロードにベアラートークンが必要な場合、UI は同一オリジンの Service ダウンロードプロキシ URL を使用し、Service はデプロイ時に注入されたダウンロードトークンを使用する前に、現在の App セッションを検証する必要があります。gatewayBaseUrlは Make バックエンド API のベース URL を指定する SDK オプションです。同じ URL について別の環境概念を作成するのではなく、まずホストの Make バックエンド設定を再利用してください。ローカルプレビューでは、makecli configure resolve --target local-preview --output=jsonとそのmake_api_originフィールドの使用を優先してください。gatewayBaseUrlは統合ログインやアカウントセンターの URL ではありません。同一オリジンのゲートウェイ直通 App と、Service 経由で公開する App のどちらにも/api/makeを優先して使用してください。両者の違いは、UI のビジネス呼び出しが/data/**などの Make バックエンド直通パスを使うか、/app/**などの Service 管理パスを使うかです。- 生成する App コードで、統合ログイン、Org、アカウントセンターの URL を設定またはハードコードしないでください。これらの URL は make-gateway が返します。
- App コードで
zs_sessionまたはmake_app_sessionを読み取り、書き込み、永続化、削除してはいけません。 - 生成する App コードで、Org OAuth URL、
redirect_uri、state、code_challenge、トークン交換、Org ログアウト URL を組み立ててはいけません。 - ブラウザーコードから
~/.make/credentialsを読み取ることはできません。 - ブラウザー側で
unifiedLogin: false、accessToken、token、tokenProvider、ローカル認証情報の読み込み、VITE_MAKE_AUTH_MODE=token、またはそれに相当するトークンモード切り替えを生成してはいけません。 - Service 専用のローカルプレビューでは、一時的なプロセスレベルの
MAKE_APP_LOCAL_PREVIEW=trueが設定されている場合に限り、makecli の認証情報を使用できます。このフラグを env ファイルや生成するドキュメントに永続化しないでください。ローカルプレビューではmakecli configure resolve --target local-preview --output=jsonを使用してmake_api_origin + /api/makeを呼び出し、公開ランタイムでは k8s 内部ゲートウェイを/make付きで呼び出す必要があります。current-context/runtime-viewは明示的なプレビュー応答にし、ルート照合ではreturn_urlなどのクエリ文字列を無視し、ビジネスリクエストにトークンを付加するのは Service 内に限ってください。 - ローカルプレビューの認証ルートで、公開時の認証プロキシルートを覆い隠してはいけません。公開ランタイムでは、
/api/make/auth/current-contextと/api/make/auth/runtime-viewは認証名前空間プロキシ経由で make-gateway に到達する必要があり、localPreview、local-preview-user、authMode: "token"、その他のプレビューコンテキストを返してはいけません。 - 認証の
current-contextを利用する Service は、Meta/Data エンベロープパーサーではなく、references/service-fronted-mode.md#current-context-consumptionに従ってください。認証名前空間プロキシは透過的なままにしてください。 - ローカル OAuth の前提条件が欠けていることを理由に、生成する App の認証方式を統合ログインから黙って切り替えてはいけません。阻害要因を報告してください。
- 公開/ログインの準備完了を報告する前に、エージェントまたはプラットフォームのチェックで認証経路を検証してください。ドメインアクセス、DevTools、k8s のログ、Cookie の確認を、ユーザーだけが実行する検証手順として残してはいけません。
- Service 経由の App では、
/api/make/auth/**と/api/make/oauth/**は、公開 App の Service プレフィックス配下に必要な名前空間レベルの Service プロキシコントラクトです。任意の便利なルートや、エンドポイントごとの許可リストではありません。 - Service 経由の Make App ではすべて、既定の
/api/make/app/principal/permissionルートが確立済みのブラウザーセッションコンテキストを受け取るようにする必要があります。 - 認証準備を整えるために、広範な
/api/make/**のパススルーを追加してはいけません。既定で透過的な名前空間は auth/oauth のみです。Service が管理するビジネスリクエストは明示的な/api/make/app/**ルート配下に置き、不明な/api/make/**パスはデフォルトで拒否してください。 - Service 経由の App では、Service がすべての make-gateway 呼び出しで App のホストコンテキストを維持する必要があります。受信した
HostからX-Forwarded-Hostを導出し、クライアントが指定したX-Forwarded-Hostを信頼せず、X-Forwarded-Protoを追加し、認証とビジネスプロキシのリクエストで同じヘルパーを共有してください。 - 認証済みの current-context 応答から、
name、avatar、tenantNameを含む表示用 ID 情報を維持してください。ただし、サーバー側の認可では信頼できない情報として扱ってください。モバイルのアカウントドロワーは、この正規化された ID 情報をmakeui経由で使用します。デスクトップ UI にtenantNameが表示されないことだけを理由に破棄してはいけません。 - 生成する認証 App のシェルでは、現在のユーザーメニューまたはホスト既定のアカウント領域に、
auth.logout()を呼び出すログアウト操作を用意する必要があります。表示 UI はmakeuiが担い、この Skill は認証ハンドラーとログアウト動作を担います。標準の例外は、検出された Feishu コンテナです。この場合、モバイルのアカウント UI ではログアウトの項目を非表示にしますが、認証ハンドラーを削除または置き換えてはいけません。Cookie の消去、Org URL の書き換え、無関係なページ上の操作によってログアウトを非表示にする動作を実現してはいけません。 - Feishu コンテナの検出は、純粋関数でテスト済みのホストヘルパーに集約してください。既存のホスト/ランタイムシグナルを優先し、それがない場合は
window.lark、window.feishu、window.LarkJSBridgeを確認してください。その後のフォールバックとしてのみ、大文字小文字を区別しないLark|Feishuのユーザーエージェント照合を使用してください。tenantName、デプロイ環境、画面幅、モバイルパッケージからコンテナを推測してはいけません。判定結果の真偽値をmakeuiのアカウント UI に渡してください。 - 生成する App では、回復可能な統合ログインの有効期限切れに対応する必要があります。SDK の初期化が
reason: "state_expired"またはreason: "challenge_expired"を返した場合、再ログインを促すメッセージを表示し、ユーザー操作からauth.login({ redirect: true })を呼び出してください。
公開前ワークフロー
- 統合ログインを使用します。統合ログインの前提条件が不足している場合は、モードを切り替えるのではなく、阻害要因を報告します。
- 認証コードを生成または変更する前に、
references/sdk-integration.mdを読みます。 - トラブルシューティングでさらに読む必要がある場合を除き、該当するモードのリファレンスを読みます。
- 既定の統合ログイン:
references/unified-login-mode.md - 401、403、ログアウト:
references/logout-and-401.md - インシデント/デバッグ:
references/troubleshooting.md
- 既定の統合ログイン:
- アプリで UI と make-gateway の間に Service レイヤーを設けている場合は、
references/service-fronted-mode.mdを読みます。 - Make バックエンドリクエストを生成またはレビューする場合は、必ず
references/request-adapter.mdを読みます。 - 認証のブートストラップは薄く保ちます。ビジネス機能では、認証の内部実装ではなく、プロジェクトの Make API アダプターと認証状態を使用します。
- 公開/ログインの準備ができたと主張する前に、認証経路を検証します。現在のコンテキストのルート、統合ログインへのリダイレクト、セッションコールバック、Cookie を保持するビジネスリクエスト、および該当する場合は Service を介した認証プロキシを確認します。
- プロジェクトツリーを利用できる場合は、生成されたアプリで
scripts/audit-auth-contract.mjs <project-root> --publishedを実行します。アプリに Service レイヤーがある場合は、--mode service-frontedを使用します。 - 生成コードを変更するときは、変更した認証経路に関するテストを追加または更新します。対象は、未認証のセッション、期限切れのセッション、403、ログアウト、統合ログインへのリダイレクト、コールバックプロキシ、ビジネスリクエストの 401 処理、現在のコンテキストの ID 正規化、通常のブラウザー/Feishu でのアカウント表示です。
リファレンスの選択
- SDK の契約とリクエストラッパー:
references/sdk-integration.md - 共通リクエストアダプターと 401/403 処理:
references/request-adapter.md - 既定の統合ログインモード:
references/unified-login-mode.md - Service を介した統合ログインモード:
references/service-fronted-mode.md - 401、403、ログアウトの動作:
references/logout-and-401.md - 認証インシデントの診断:
references/troubleshooting.md - Service を介したルート形状の最小例:
references/service-fronted-node-example.md。references/service-fronted-mode.mdを読んだ後にのみ読みます。
決定論的チェック
生成されたアプリのプロジェクトで scripts/audit-auth-contract.mjs を使用し、公開前に契約の不整合を検出します。
node skills/make-app-auth/scripts/audit-auth-contract.mjs <project-root> --published
node skills/make-app-auth/scripts/audit-auth-contract.mjs <project-root> --mode service-fronted --published
この監査の対象は認証です。統合ログインの準備状況、/api/make の直接的な fetch の使用、Service を介した /api/make/auth/** および /api/make/oauth/** の名前空間プロキシの有無、ローカルプレビューでの認証のシャドーイング、広範な /api/make/** パススルーのリスク、明らかな直接ルートと Service ルートの不一致をチェックします。スキーマのレンダリングや UI の空白ページの動作は検証しません。
現在のコンテキストをすでに使用している主要ルートについては、scripts/current-context-conformance-suite.mjs <host-adapter-module> を本番ハンドラーに対して実行します。詳しくは references/service-fronted-mode.md#current-context-consumption を参照してください。他のルートに認証リクエストを追加する必要はありません。
監査の要件:
tokenという名前の UI デザインシステムのテーマフィールドは、認証トークンモードではありません。認証設定内のトークンモードのオプション、認証環境の切り替え、ブラウザーの認証情報へのアクセス、または明示的なauthMode: "token"の経路のみを指摘します。- Service の名前空間プロキシは、直接の文字列ルート、定数、
.startsWith(...)、または同等の正規表現によるルートマウントとして表現できます。ただし、/api/make/auth/**と/api/make/oauth/**が内部の/make/auth/**と/make/oauth/**にマッピングされている必要があります。 - Cookie の転送には、
req.headers.cookie、req.header("cookie")、Fetch のheaders.get("cookie")、または同等の受信ヘッダーアダプターを使用できます。 - 監査のヒューリスティクスを変更する場合は、生成されたアプリで見つかった誤検出および見逃しのケースを特に考慮し、
scripts/test-audit-auth-contract.mjsのテストを最新の状態に保ちます。
makeui との連携
makeui が Make App のフロントエンドコードを生成または編集する際、認証に関する判断はすべてこのスキルが担当します。makeui は認証結果に応じた UI 状態を設計できますが、OAuth、Cookie、トークン、ログアウト、または /api/make/** リクエストのロジックを独自に作り出してはいけません。
make-app-auth は、ユーザーが認証済みか、未認証か、アクセスを禁止されているか、認証の有効期限が切れているか、または認証プロキシ/コールバックの問題によってブロックされているかを報告します。認証済みの Make リクエストがすでにバックエンドに到達している場合、スキーマ形状の不一致、フィールドの欠落、レンダリングのクラッシュ、画面が真っ白になる問題、またはレコードテーブルの動作を診断してはいけません。