4.0
{doctitle}

1. Serverless(JavaScript)版

Fetch APIに対応したJavaScriptランタイムが提供されるサーバーレスなエッジ環境で動作するWAMプラグインモジュール実装です。
Node.js 22以上、Deno、Workerなど様々なJavaScriptランタイムで動作します。

WAMプラグインモジュールの実装は、JavaScriptライブラリとして提供します。
また、WAMプラグインとしてサーバーレス環境で実行可能なコードを実装/ビルドするための unjs/h3 (HTTP フレームワーク)をベースとしたTypeScriptのスケルトンプロジェクトを提供します。

標準で、以下のサーバーレス環境用のスケルトンプロジェクトを提供します。

  • AWS Lambda@Edge版

  • Cloudflare Workers版

  • Netlify Edge Functions版

初期設定

  1. 事前準備/前提

    • 開発端末にNode.jsがインストールされていない場合、Node.jsのインストールが必要です。

    • 有償版のSDKに同梱されているServerless版スケルトンプロジェクトの内、利用したいサーバーレス環境のスケルトンプロジェクトのフォルダ(例 : iplass-wam-lambdaedge-plugin)を開発端末にコピーしてください。

  2. WAMプラグインの実装/ビルド/配置

    • スケルトンプロジェクトをコピーしたディレクトリで、 npm install コマンドを実行し、依存するJavaScriptライブラリをダウンロードします。

    • スケルトンプロジェクトの src/config.ts 内の defineConfig関数 を実装し、WAMプラグインモジュールの設定を行います。設定項目の詳細はWAMプラグインモジュールの設定を参照してください。

    • 必要に応じて、WAMプラグインモジュールのロジックのカスタマイズ処理やフック処理、その他必要なロジックを実装します。詳細はスケルトンプロジェクト内の README.md を参照してください。

    • ビルド方法やデプロイ方法の詳細は、スケルトンプロジェクト内の README.md を参照してください。

設定方法/設定例

Serverless(JavaScript)版のWAMプラグインモジュールでは、スケルトンプロジェクトの src/config.ts 内の defineConfig関数 を実装することでWAMプラグインモジュールの設定を行います。

サンプル
export default defineConfig(() => ({
  // iPLAssサーバー側(=WAM本体)のURL
  wamBaseUrl: "https://my.iplass.jp/myiplassapp/mytenant/",

  // iPLAssサーバー側(=WAM本体)からのコールバックを受け取るURLパス
  wamAuthCallbackPath: "/wamauthcallback",

  // 管理対象サイトID
  siteId: "local",

  // 管理対象サイトSecret
  siteSecret: "123",

  // 管理対象サイト側で権限チェックを行う(WAMで保護する)パターンを示す正規表現
  protectedPattern: [{ domain: "mysite.example.com", pathPattern: /^\/protect\/.*$/ },],

  // 許可対象のIPが含まれるかどうかチェックするリクエストヘッダー名
  allowedIpHeaderName: "True-Client-IP",

  // 500エラー画面URL
  systemErrorPageUrl: "/error/500.html",

  // 503エラー画面URL
  unavailableErrorPageUrl: "/error/503.html",

  // 403エラー画面URL
  forbiddenErrorPageUrl: "/error/403.html",

  // エラー発生時のデフォルトのリダイレクト先URL
  defaultErrorRedirectUrl: "/error/default.html",

  // 4.0.0以降のバージョンではdebugが廃止され、logLevelが追加されました
  // ログレベル
  logLevel: "error",

  // ヘッダーにiPLAssのユーザー情報を格納するかの判定フラグ
  mapUserAttribute: false,

  // ヘッダーにiPLAssのユーザー情報を格納する場合に利用する
  attributeMap: [
    { headerName: "x-wam-user-id", userAttributeName: "accountId" }
  ],

  // クライアントIPを許可APIのリクエストに含めるか
  includeClientIpToPermissionRequest: true
}));