4.3. フロールーティング¶
フロールーティングの構成要素と、動作仕様について説明します。
項目
4.3.1. 概要¶
フロールーティングでは、以下の情報を保持しています。
- ルート
- HTTPメソッド
- フロー定義ID
- フローバージョン
- セキュアフラグ
- 認証方式
- 認可URI
コラム
フロールーティング情報は、紐づくフロー定義とそのバージョンが削除された場合に一緒に削除されます。
それぞれの情報の利用用途について、説明します。
フロールーティングの定義に一致するリクエストを受信した場合、以下の順序で処理を行います。
- ルート・HTTPメソッドに一致するフロールーティング情報の取得
- セキュアトークンによるCSRF攻撃チェック
- 認証方式による認証
- 認可
- ロジックフローへの入力データの構築
- ロジックフローの実行
- ロジックフローの出力データの返却
各処理でエラーが発生した場合、後続の処理は実行しません。
4.3.2. ルート・HTTPメソッドに一致するフロールーティング情報の取得¶
ロジックフローをREST APIとして利用するためのURLは、以下の通りです。
<SCHEME>://<HOST>(:<PORT>)/<CONTEXT_PATH>/logic/api/${route}
フロールーティングで持つルートは、上記の ${route} を指す値です。 また、利用できるHTTPメソッドは、 GET, POST, PUT, DELETE です。
URLが <SCHEME>://<HOST>(:<PORT>)/<CONTEXT_PATH>/logic/api/ から始めるリクエストを受信した場合、フロールーティングのルートとHTTPメソッドを元に一致するフロールーティングが存在しないか否かを検索します。
4.3.3. セキュアトークンによるCSRF攻撃チェック¶
フロールーティングのセキュアフラグが有効になっている場合、セキュアトークンによるトークンチェックを行います。 認証方式として「IMAuthentication」を選択している場合は、CSRF対策として有効とすべきです。
トークンチェックに利用するトークンは以下のいずれかの箇所に含める必要があります。
- リクエストヘッダ X-Intramart-Secure-Token
- リクエストパラメータ im_secure_token
トークンの発行は SecureTokenManager で行います。 トークンの発行とREST APIへのリクエストは同一のセッション内で行う必要があります。
4.3.4. 認証方式による認証¶
フロールーティングの認証方式により、認証処理を行います。 認証方式は以下が存在します。
4.3.4.1. IMAuthentication¶
特別な認証処理を行わず現在のCookieに紐づくセッションの認証状態のままロジックフローを実行します。
4.3.4.2. Basic¶
Basic認証による認証を行いロジックフローを実行します。
コラム
「ユーザコード」の指定
デフォルトテナントに対して認証を行います。
「テナントID\ユーザコード」の指定
指定したテナントに対して認証を行います。
4.3.4.3. OAuth¶
GET /<resource_path> HTTP/1.1 Host: localhost Authorization: Bearer <access_token>
4.3.5. セッション管理¶
4.3.6. 認可¶
コラム
注意
4.3.7. ロジックフローへの入力データの構築¶
4.3.7.1. JSON¶
4.3.7.2. リクエストパラメータ¶
input1=string&input2=123
input1.str=string1&input1.int=1
input1.str=string1&input1.int=1&input1.str=string2&input1.int=2
- 型ID “object” が配列型であり、かつ、そのプロパティ(または内包するプロパティ)に配列型が存在する。
型ID 説明 string 文字列をそのまま指定します。 boolean true/falseで表現します。 byte 整数形式で表現します。 character 整数形式で表現します。 short 整数形式で表現します。 integer 整数形式で表現します。 long 整数形式で表現します。 float 数値を指定します。 double 数値を指定します。 bigdecimal 数値を指定します。 biginteger 整数形式で表現します。 locale ロケールIDを指定します。 timezone タイムゾーンIDを指定します。 calendar ISO 8601の拡張形式で指定します。 date ISO 8601の拡張形式で指定します。 imdatetime ISO 8601の拡張形式で指定します。 imduration 対応していません。 sqldate ISO 8601の拡張形式で指定します。 sqltimestamp ISO 8601の拡張形式で指定します。 binary アップロードするファイルを指定します。 multipart/form-data 形式の場合のみ利用可能です。ファイルを binary型にした場合はファイル名を取得する事はできません。storage アップロードするファイルを指定します。 multipart/form-data 形式の場合のみ利用可能です。アップロードされたファイルは SessionScopeStorage へ保存されフローへ受け渡されます。map 対応していません。 any 対応していません。
4.3.8. ロジックフローの実行¶
4.3.9. ロジックフローの出力データの返却¶
4.3.9.1. JSONに変換して返却¶
4.3.9.2. テキストとして返却¶
output <object> ┗ body <string> or <storage>
4.3.9.3. HTMLとして返却¶
output <object> ┗ body <string> or <storage>
4.3.9.4. XMLとして返却¶
output <object> ┗ body <string> or <storage>
4.3.9.5. JSONとして返却¶
output <object> ┗ body <string> or <storage>
4.3.9.6. 任意のContent-Typeで返却¶
output <object> ┠ body <string> or <storage> ┗ Content-Type <string>
4.3.9.7. ファイルダウンロード¶
output <object> ┠ body <storage> ┗ Content-Type <string>
4.3.9.8. ファイルをインラインで返却¶
output <object> ┠ body <storage> ┗ Content-Type <string>
4.3.9.9. ファイルをバイナリで返却¶
output <object> ┠ body <storage> ┗ Content-Type <string>
4.3.10. REST APIのセキュリティ¶
4.3.11. バーチャルテナントによる複数テナントにおけるREST APIの実行¶
4.3.11.1. リクエスト情報を利用したテナント自動解決機能を利用している場合¶
4.3.12. エラー発生時のレスポンス¶
{
"error" : true,
"errorMessage" : "message"
}
コラム
セッション・タイムアウトによるエラーレスポンス等、 application/json 以外の形式でレスポンスが返ることがあります。
コラム
同じステータスコードでもエラーの原因が異なる場合があります。
ステータスコード | 説明 |
---|---|
400 |
|
401 |
|
403 |
|
404 |
|
500 |
|
4.3.13. Swagger出力¶
<SCHEME>://<HOST>(:<PORT>)/<CONTEXT_PATH>/all-api-docs
すべてのREST APIの仕様を出力します。<SCHEME>://<HOST>(:<PORT>)/<CONTEXT_PATH>/api-docs/${category-id}
ロジックフローに指定されているカテゴリを${category-id}に指定することでそのカテゴリを持つロジックフローのREST APIの仕様を出力します。
コラム
「ルーティング定義一覧」画面から、この機能を利用したREST APIの仕様の閲覧が可能です。
4.3.14. JSON上でのデータの表現¶
型ID Jsonでの表現 説明 string String boolean Boolean byte Number character Number short Number integer Number long Number float Number double Number bigdecimal String 数値表現で指定します。 biginteger String 整数表現で指定します。 locale String ロケールIDを指定します。 timezone String タイムゾーンIDを指定します。 calendar String ISO 8601の拡張形式で指定します。 date String ISO 8601の拡張形式で指定します。 imdatetime String ISO 8601の拡張形式で指定します。 imduration (非対応) JSON形式での表現に対応していません。 sqldate String ISO 8601の拡張形式で指定します。 sqltimestamp String ISO 8601の拡張形式で指定します。 binary (非対応) JSON形式での表現に対応していません。 storage (非対応) JSON形式での表現に対応していません。 map Object object Object any (非対応) JSON形式での表現に対応していません。
コラム
「ロジックフロー定義編集」画面で選択不可能な型も含まれています。