API
ApiFrontが提供するAPI一覧です。
ログインセッション情報取得API
GET /session
ログインセッションの詳細情報を返却します。
認証済ユーザ情報や、バックエンドへのアクセストークンやプロキシパス、その他コンフィグ情報の参照が可能です。起動パラメータによって返却される内容は異なります。
また、起動パラメータの authentication.generator に指定されたトークンジェネレータが存在する場合は、/session APIコール時にアクセストークンの再生成が行われます。この場合、authentication.transparentTokens の設定値によって以下のように挙動が異なる点に注意が必要です。
-
authentication.transparentTokens : false [デフォルト]
ApiFrontでのトークンインジェクションは行わないため、SPA側からのAPIリクエストにtokenを埋め込む必要があります。したがってSPAの実装では、/session API のレスポンスのtoken情報を解析する必要があります。
-
authentication.transparentTokens : true
ApiFrontでトークンインジェクションを行うため、SPA側からのAPIリクエストではtokenを全く意識する必要がありません。そのため、/session API のレスポンスにはtoken情報が含まれません。
Request (query)
項番 | プロパティ | 型 | 説明 |
---|---|---|---|
1 | refresh | boolean | セッション情報の取得に合わせて、アクセストークンの再生成を行います。authentication.transparentTokensがfalseの場合は、このクエリの指定有無にかかわらず、常にトークンの再生成が行われます。 |
2 | entirety | boolean | レスポンスに、同一account_id が保持するセッション一覧(sessions)を含めて返却します。この配列の値が2つ以上の場合は、同一アカウントでの複数ログイン状態と判定できます。この機能は session storeがredisの場合のみ有効になります。 |
Response (body)
項番 | プロパティ | 型 | 説明 |
---|---|---|---|
1 | id | string | ログインセッションを識別するIDです |
2 | auth | object | 認証プロバイダで認証されたログインユーザのアカウント情報です |
2-1 | auth.account_id | string | ログインアカウントのIDです |
2-2 | auth.account_role | string | ログインアカウントのロール名です |
2-3 | auth.avatar | string | ログインアカウントのアイコン画像へのリンクです |
2-4 | auth.strategy | string | 利用している認証方式です(OAuth/OpenIDなど) |
2-5 | auth.provider | string | 認証プロバイダの名称です |
2-6 | auth.properties | object | 認証プロバイダから取得できる認証情報です。利用するプロバイダによって内容は異なります |
2-7 | auth.expires | any | アカウントの有効期限です(Qmonus-SDK連携の場合のみ) |
2-8 | auth.metadata | any | アカウントのメタデータです(Qmonus-SDK連携の場合のみ) |
2-9 | auth.accessToken | any | バックエンドAPIサーバのアクセストークンです(Qmonus-SDK連携の場合のみ) |
2-10 | auth.credentialExpires | any | バックエンドAPIサーバのアクセストークンの有効期限です(Qmonus-SDK連携の場合のみ) |
3 | backend | string | APIバックエンドへのプロキシパスです。起動設定でプロキシーパス(backend.proxypath)が指定されていない場合は、APIバックエンド(backend.target)の値が返却されます |
4 | configs | object | ApiFrontの起動ファイルで指定されたカスタム情報を返却します |
5 | query | string | SPAレンダリング時にURLで指定されたquery情報が格納されます |
6 | params | string | SPAのレンダリング用のパス(content.route )で変数を許容する場合( content.route=/:tid/v1/:rid のような指定 )に、実際にURLリソースで指定された情報が格納されます。( content.route=/:id/ のような指定が可能 ) |
7 | sessions | array | 同一account_idのセッションIDが格納されます。(リクエスト時にクエリで、entirety=true を指定した場合のみ) |
サンプルレスポンス(SDKポータル認証連携の場合)
json
{
"id": "zqS7PBARlU9N55kYYCzA63VMMG9jYru6",
"auth": {
"account_id": "hogfuga@axis-dev.io",
"account_role": "admin",
"avatar": "https://lh3.googleusercontent.com/a-/XXXXXXX",
"displayName": "hogfuga",
"accessToken": "xxxx",
"credentialExpires": "2021-06-22T06:24:43.943Z",
"expires": null,
"metadata": {
"status": "Active"
},
"properties": {
"emails": [
{
"value": "hogfuga@axis-dev.io",
"verified": true
}
],
"roles": []
},
"provider": "qmonus",
"strategy": "qmonus"
},
"backend": "/v1/",
"configs": {
"param1_enum" : ["dev-001" , "dev-002" ],
},
"params": {},
"query": {},
"sessions": [
"zqS7PBARlU9N55kYYCzA63VMMG9jYru6"
]
}
- SPA側では/sessionで取得した値に基づき、APIコールのベースパスを決定する仕組みを実装しておくことで、デプロイ環境に依存しないSPAの開発を行うことができます。例えば、SPA側で
javascript
let baseURL = await http.get("/session").backend;
await http.get( `${baseURL}/hoge` )
のように、ajaxのURLパスで指定するパスをsessionAPIから取得したベースパスからの指定にしておくことで、backend側のURL変更や、CORSを利用した直接アクセスに変更するなどの場合でも、SPA側の修正を行うことなく設定のみの変更で対応が可能になります。
- sessionsプロパティでは、同一アカウントIDで利用中のセッション数が取得できます。 ApiFrontのセッションはcookieによる管理になりますので、ブラウザ単位で1セッションになります(ブラウザの設定にもよりますが、複数タブでも別Windowでも1セッションとなります)
つまり、ここで2件以上のセッションが返却される場合は、別の端末もしくは別の種類のブラウザで同一ユーザがログインしていることを示します。この値をSPA側で検証することで、同一ユーザの別端末ログイン状態を処理することも可能です。
ログアウトAPI
POST /logout , /signout
セッション情報を開放する(ログアウト)APIです。該当セッションの情報がセッションストアからクリアされます。ただし連携先の認証プロバイダーの情報からは削除されません
ちなみにmethodは、GETでも可能です。
認証連携API
GET /auth/[XXX]/callback
外部認証プロバイダ連携で必要なコールバックAPIです。
外部認証プロバイダのOAuthクライアント設定で指定するコールバックURLに含めてください。
※ XXXはコンフィグで指定した、authentication.name もしくは config.authentication.strategy になります。
ファイル生成API
パラメータで指定したデータを、ブラウザのファイルダウンロード機能でダウンロードさせる機能です。
※ ApiFrontの内部処理では、拡張子が pdf/png/jpeg/jpg のファイル生成に、puppeteer@1.20 を利用していますが、デフォルトではpuppeteerはバンドルされないため、この機能は利用できません。ご利用の際はサポートに問合せてください。
GET /echo (deprecated)
Request (query)
項番 | プロパティ | 型 | 説明 |
---|---|---|---|
1 | template | string | 利用するテンプレートを指定します。利用するテンプレートは事前に起動パラメータで指定しておく必要があります。 |
2 | params | string | テンプレートで使用するパラメータを指定できます。 |
3 | filename | string | ダウンロードするファイル名です。 |
Sample Request
curl https://api-front-xxxx.sdk-lab.qmonus.net/echo?template=preset&filename=test.pdf
POST /echo (deprecated)
Request (body)
項番 | プロパティ | 型 | 説明 |
---|---|---|---|
1 | template | string | 利用するテンプレートを指定します。利用するテンプレートは事前に起動パラメータで指定しておく必要があります。 |
2 | params | object | テンプレートで使用するパラメータを指定できます。 |
3 | filename | string | ダウンロードするファイル名です。 |