メインコンテンツまでスキップ

ルーティングアクション

セッション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のクレームおよびリクエストコンテキスト上の変数名は以下の通りです。

クレーム名説明変数名
issstringセッションIDを発行した仮想ホストのFQDNsession_originator
substringセッションID.session_id
iatinteger発行日時(UNIXタイムスタンプ)session_start_at
expinteger有効期限(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": [
    ]
}

プロキシ

リクエストをプロキシ先のサービスに転送するためのアクションです。 前フェーズまでで作成されたレスポンスは破棄され、プロキシ先サービスから返却されたものが新しいレスポンスとなります。 このアクションは、リクエストを別のマイクロサービスに転送するために使用されます。

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
}