概要
Qmonus-SDK ApiFront(Casval)は、Qmonus-SDKで開発したAPIを利用するWebアプリケーション(単一ページアプリケーション=SPA)のホスティングに特化した軽量Webサーバです。
認証・認可やバックエンドのAPIサーバなどのデプロイ環境に依存する設定を、SPAから分離・提供するための機能を有しているため、ApiFrontを利用することでSPA開発者はAPIクライアントとしての機能実装に注力することができます。
ここでは、ApiFrontが提供する基本機能について紹介します。
SPAホスティング
SPAを構成するメインコンテンツと関連するアセット一式を、ApiFrontのWebサーバでホスティングします。起動設定で指定したランディングページのURLにアクセスすることで、メインコンテンツ(SPA)をレンダリングします。
ApiFrontはSPAのホスティングに特化しているため、複数ページのホスティングはできません。ページ切替処理はSPA側のルーティングライブラリを利用して実現してください。ルーティングライブラリの利用では、基本はHashモードの利用を推奨しますが、ApiFrontの起動設定で明示的に指定することでhistoryモードへの対応も可能です。その場合はサーバー側でのNotFound処理(404ハンドリング)は無効になります。

認証連携
Qmonus-SDKポータルや外部のOAuth/OpenID認証プロバイダーと認証連携が可能です。プロバイダーが提供するシングル・サインオンや2要素認証機能を利用することができます。認証プロバイダーとの連携はApiFrontのサーバサイドで実施されるため、プロバイダーとの連携に必要なサービスアカウントやキー情報などはSPAから隠蔽されます。
外部プロバイダー側で管理されるセッションの有効期限がApiFront側では判断できないため、コンテンツレンダリング(ブラウザのリロード処理)の都度認証シーケンスを行い外部プロバイダー側のセッション状態を確認します。
Qmonus-SDKポータル以外にも、Google / Github / Auth0 / Slack との連携が可能です。その他の認証プロバイダとの連携もプラグインを開発することで対応が可能です。

APIプロキシー
Qmonus-SDKで開発したAPIや外部のAPIサーバへのプロキシーを行います。ApiFrontでホスティングされるSPAからはSameSiteのAPIアクセスとして、クロスオリジン制約を受けることなくAPIアクセスが可能になります。またAPIプロキシー時に認証プロバイダーから取得したアクセストークンの付与を行うこともできます。
他にもAPI-Proxyのリクエストやレスポンス時にスクリプトを動作させる機能により、データ構造や文字列の変換など簡単な処理を行うこともできます。

スクリプト/スタイルインジェクション
SPAのコンテンツレンダリング時に、コンフィグで指定したscriptやcssなどを挿入することができます。
共通的に利用するヘッダーやフッダーがスクリプトで提供されるような場合には、この機能を利用して動的にSPAに挿入することも可能です。

SPAの環境依存データ分離
SPA側の処理を起動環境によって変えたいケースや参照する設定値を変えたい場合に、デプロイ環境に依存するパラメーターを分離し、任意のフォーマットのコンフィグデータとしてAPIで提供します。デプロイする環境毎にApiFrontの設定ファイルを用意することで、SPA側ではデプロイ先を意識する必要がなくなります。
