Skip to content

テナントコンテキスト・代理ログイン

テナントコンテキスト解決

BFF セッションから取得した JWT のクレームを基に、リクエストごとにテナントコンテキストを設定する:

リクエスト+ Session CookieセッションストアJWT クレームTenantId / UserIdITenantContextIPortalContextPostgreSQL RLSSET app.current_tenant_idMediatR ハンドラー
リクエスト+ Session CookieセッションストアJWT クレームTenantId / UserIdITenantContextIPortalContextPostgreSQL RLSSET app.current_tenant_idMediatR ハンドラー

代理ログイン(Impersonation)

代行事業者ポータルから顧問先テナントのコンテキストにスイッチする際のフロー:

POST /impersonation/start (targetTenantId)認可チェック (agency_admin / agency_staff)Impersonation セッション作成Impersonation 開始を記録テナントコンテキスト切替完了API リクエスト (Impersonation 中)データマスキングルール適用全操作を impersonated_by 付きで記録マスク済みレスポンスPOST /impersonation/endImpersonation セッション終了Impersonation 終了を記録代行事業者コンテキストに復帰impersonated_by を記録顧問先テナントのデータを閲覧代行事業者ポータルBFFセッションストア監査ログ
POST /impersonation/start (targetTenantId)認可チェック (agency_admin / agency_staff)Impersonation セッション作成Impersonation 開始を記録テナントコンテキスト切替完了API リクエスト (Impersonation 中)データマスキングルール適用全操作を impersonated_by 付きで記録マスク済みレスポンスPOST /impersonation/endImpersonation セッション終了Impersonation 終了を記録代行事業者コンテキストに復帰impersonated_by を記録顧問先テナントのデータを閲覧代行事業者ポータルBFFセッションストア監査ログ

データマスキングルール

Impersonation 時は以下のマスキングルールを BFF のビューモデル変換で適用する:

データ分類ロール: agency_adminロール: agency_staffロール: sys_support
Restricted(マイナンバー)非表示非表示非表示
Confidential(給与額)表示マスク***,***円マスク
Confidential(家族情報)表示表示マスク
Internal(氏名、メール)表示表示表示
申告データ変更不可(閲覧のみ)不可不可
  • Impersonation 中の全操作は監査ログに impersonated_by 付きで記録(→ security-design.md 監査ログ設計
  • 代理ログインの開始・終了も監査ログに記録

→ 満たす要件: SR-004 認可要件SR-009 データ分類