samples/ には実行可能な 2 つのアプリケーションがあります。GrantForge とともにエンドツーエンドテストで検証されており、連携する際に最も参考になる資料です。
| サンプル | ポート | 示している連携方式 |
|---|---|---|
samples/shop |
19081 | ブラウザは公開クライアント + PKCE でクロスオリジンログインし、リソースごとにボタンを表示します。バックエンドは @RequirePermission で API を検証し、@GrantForgeEntity で注文エンティティを宣言して、「本人のみ」「自テナント全体」のデータ範囲で検索します |
samples/notes |
19082 | サーバーは Spring Security oauth2Login(機密クライアント + PKCE)でログインし、カスタム AccessTokenResolver でセッションからトークンを取得します。権限を持つ人にだけ「ノートの作成」を表示します |
実行
サンプルは独立した Maven ビルドであり、このリポジトリの starter と JavaScript SDK に依存します。
./mvnw -N install
./mvnw -pl sdk/grantforge-spring-boot-starter install
(cd sdk/grantforge-js && pnpm install && pnpm build)
./mvnw -f samples/pom.xml packageサンプルの設定はすべて環境変数から取得します。
| 変数 | 説明 |
|---|---|
GRANTFORGE_URL |
GrantForge のアドレス |
SHOP_BROWSER_CLIENT_ID |
ショップのブラウザ側の公開クライアント |
SHOP_CLIENT_ID / SHOP_CLIENT_SECRET |
ショップのバックエンドがデータエンティティの宣言に使う機密クライアント(catalog scope) |
SHOP_SDK_DIRECTORY |
JavaScript SDK のビルド成果物ディレクトリ(sdk/grantforge-js/dist) |
GrantForge 側では、2 つのアプリケーションのリソース、クライアント、ロール、データポリシーを用意しておく必要があります。エンドツーエンドテストの準備スクリプト core/grantforge-web/tests/samples/setup.ts がこれらの手順をすべて示しているため、そのまま参照できます。
エンドツーエンドテスト
script/ci/e2e_fullstack.sh はフルスタックテストの後に 2 つのサンプルをビルドして起動し、クロスオリジン PKCE ログインと CORS、ボタンの表示と非表示、インターフェースの 403、「本人のみ」と「自テナント全体」のデータ範囲、削除とログアウト、ノートアプリケーションのサーバー側ログインを検証します。GRANTFORGE_E2E_SKIP_SAMPLES=1 を設定するとスキップできます。
