ルーティングアクション
セッションID管理
このアクションは、CHIPIN_SESSION Cookie が存在しない場合、新しいセッションIDをを発行します。 セッションIDはPRNG(擬似乱数生成器)を使用して生成された48ビットの数値で、base64で 64文字の文字列にエンコードされます。
CHIPIN_SESSION Cookie が存在する場合は、JWTを検証し、 iss, exp の妥当性をチェックします。 sub の値をセッションIDとして使用します。有効期限が再発行閾値を過ぎている場合は、CHIPIN_SESSION Cookie を再発行します。 exp 以外の値は引き継がれます。 セッションIDはメモリ上に保存して管理しているわけではないので、サーバ側で無効化することはできません。セッションの有効期限が切れるまで有効です。
新しくセッションIDを生成した場合、および再発行した場合はレスポンスヘッダに Cookie を以下のように追加します。
Set-Cookie: CHIPIN_SESSION=*JWT*;HttpOnly;Secure;SameSite=Strict;
サブドメインに shareCookie: true が設定されている場合は、CHIPIN_SESSION Cookie の Domain 属性にサブドメインの FQDN を設定します。 これにより、同じサブドメイン配下の仮想ホスト間でセッションを共有できます。
JWTのクレームは API Gateway のリクエストコンテキストの変数として保存されます。 JWTのクレームおよびリクエストコンテキスト上の変数名は以下の通りです。
クレーム名 | 型 | 説明 | 変数名 |
---|---|---|---|
iss | string | セッションIDを発行した仮想ホストのFQDN | session_originator |
sub | string | セッションID. | session_id |
iat | integer | 発行日時(UNIXタイムスタンプ) | session_start_at |
exp | integer | 有効期限(UNIXタイムスタンプ) | session_expire_at |
type required | string Value: "setSessionId" |
expiration | integer Default: 15552000 セッションIDの有効期限。単位は秒で、デフォルトは 15552000 秒 (180日)。 この時間の半分を過ぎると、CHIPIN_SESSION Cookie が再発行される。 この時間を過ぎると、セッションIDは無効となる。 |
{- "type": "setSessionId",
- "expiration": 15552000
}
サービス確認
このアクションは、SPN Hub 上で指定されたサービスが利用可能かどうかをチェックします。 利用可能である場合は、アクションは成功しますが、利用可能でない場合は 503 Service Unavailable エラーを返します。 そのレスポンスでは JavaScript により /.waitforAvailable の SSE を取得してサービスが利用可能になるのを待ちます。
type required | string Value: "checkoutServices" |
services | Array of strings <urn> [ items <urn > ] |
{- "type": "checkoutServices",
- "services": [
- "urn:chip-in:service:example-realm:hub1:authz-rbac"
]
}
プロキシ
リクエストをプロキシ先のサービスに転送するためのアクションです。 前フェーズまでで作成されたレスポンスは破棄され、プロキシ先サービスから返却されたものが新しいレスポンスとなります。 このアクションは、リクエストを別のマイクロサービスに転送するために使用されます。
type required | string Value: "proxy" |
target required | string プロキシ先サービスのURN。 |
noBody | boolean true の場合、リクエストボディは転送されない。 デフォルトは false で、リクエストボディは転送される。 |
{- "type": "proxy",
- "target": "\"urn:chip-in:service:example-realm:cms-service\"",
- "noBody": false
}