Upgrade to Pro — share decks privately, control downloads, hide ads and more …

会計事務所と顧問先の契約関係をOIDC・OAuthで表現する

Avatar for てらら てらら
August 25, 2026

 会計事務所と顧問先の契約関係をOIDC・OAuthで表現する

OAuth/OIDC Numa (Immersion) Workshop 2026 で発表した登壇資料です。

Avatar for てらら

てらら

August 25, 2026

More Decks by てらら

Other Decks in Technology

Transcript

  1. 会計事務所が業務を開始するまでの概観 01 02 03 顧問契約の締結 スタッフの割り当て 委任業務の実施 会計事務所と顧問先事業者が顧問契 約を交わす。 会計事務所スタッフを顧問先に割り

    当てる。 会計事務所へ委任された業務として 顧問先事業者の業務を会計事務所ス タッフが実施する。 【業務遂⾏の前提】 会計事務所スタッフの業務は、「顧問契約」 / 「会計事務所の所属関係」 / 「顧問先事業者での担当関係」 に基づいて⾏われる ※ 代⾏業務として特別な資格が不要な業務も存在しますが、本スライドの定義上では取り扱いません。 5
  2. 余談: マルチテナントSaaS 特有の事情 freeeでは、事業者・会計事務所問わず全てのユーザーが同一サービス内のテナントに存在し、ユーザーはシームレスに操作対象 を切り替えることが可能。 さらに、同一ユーザーが複数の事務所に所属し、同一顧問先の業務を行う可能性もある。 所属: 会計事務所 A1 契約関係:

    Relationship A1-C ユーザー 操作対象 Alice 顧問先 C 所属: 社労⼠事務所 A2 契約関係: Relationship A2-C Aliceが顧問先Cを操作する時にはどの契約‧所属関係に基づいて操作しているのかを監査する必要がある。 ⇒ ユーザー と 操作先ターゲット だけの情報では表現できない 6
  3. 担当者割り当ての状態遷移 前提: 顧問契約がアクティブであること 未割り当て 担当者登録 アクティブ 再開 担当解除 / 契約終了

    担当者が委任権限を行使 できる状態。 ・顧問契約が有効 ・会計事務所に所属 ・顧問先の担当者割当て 一時停止 一時無効化 10
  4. 委任された業務を実施するプロセス 以下は 1回の操作に対する認可シーケンスを表現したもの 1. ユーザーを認証する 2. 操作元となる会計事務所をユーザーが選択する 3. 操作先となる顧問先をユーザーが選択する 4.

    該当する顧問契約を特定する 5. 顧問先の担当者割り当てを確認する 6. 実施する業務が委任された範囲内であるかを確認する 7. 委任内容に基づいて追加の認証が必要であれば実施する 8. 顧問先のリソースにアクセスする 9. 操作結果を監査記録へ残す 11
  5. 監査記録に必要な情報一覧 要素 意味 subject, actor 実際に操作したユーザー origin 今回選択している会計事務所 target 操作対象の顧問先

    relationship_id 権限の根拠となる顧問契約 relationship_version どの時点の契約条件を評価したか assignment_id 担当者としての割り当て actions 許可された操作 assurance 認証強度・再認証状態 12
  6. 各要素をOAuth/OIDCの既存仕様へ分解 要素 意味 subject, actor sub / act claim origin

    標準表現なし target aud claim または Resource Indicators for OAuth2.0 relationship_id 標準表現なし relationship_version 標準表現なし assignment_id 標準表現なし actions scope または RAR assurance auth_time、acr、amr 委任コンテキストをRARに渡せば行けるか… 13
  7. RAR上で委任コンテキストを表現する { "type": "delegated_accounting_access", "origin": "accounting-office-a1", "target": "client-c", "relationship_id": "contract-a1-c",

    "relationship_version": "3", "assignment_id": "assignment-u-a1-c", "actions": [ "read" ] } RARが提供する認可要求に委任コンテキストを含めておき、 AuthZENで判定を行う。 14
  8. AuthZENの認可判定モデル { "subject": { "type": "user", "id": "user-u" }, "resource":

    { "type": "tenant", "id": "client-c" }, "action": { "name": "read" }, "context": { (右記参照) } "context": { "origin": { "type": "organization", "id": "accounting-office-a1" }, "relationship": { "type": "advisory_contract", "id": "contract-a1-c", "version": "3" }, "assignment": { "id": "assignment-u-a1-c" } } } AuthZENで契約状態に基づき判定を行う。契約状態の変化を SSFで通知する 15
  9. SSFの契約終了イベント送信 { "iss": "https://contracts.example.com", "iat": 1787540400, "jti": "event-123", "aud": "https://authorization.example.com",

    "events": { "https://example.com/events/relationship-status-changed": { "relationship_id": "contract-a-c", "relationship_version": "4", "previous_status": "active", "current_status": "terminated", "effective_at": "2026-08-24T15:00:00Z" } } } ※ relationship-status-changed は独自イベント型の例 16
  10. 顧問契約のシーケンス (※主要な呼び出し経路のみを抜粋) 会計事務所 / 顧問先権限者 依頼状態を司る サー ビス 契約レジストリ SSF

    Transmitter PDP / STS 顧問契約承認依頼 仮契約状態を保存 承認 アクティブ状態を保存 契約アクティブイベント送 信 発行可能状態 契約終了 無効状態を保存 契約無効イベント送信 発行停止・再評価・失効 19
  11. 委任業務のシーケンス (※主要な呼び出し経路のみを抜粋) User Client / PEP 業務開始 Origin / Target

    / Action PDP / AuthZEN AS Registry STS Resource Server 認可 Request + RAR AuthZEN evaluation Relationship + Assignment 契約状態 (subject token発行割愛) decision 必要に応じてToken Exchange。委任コンテキストに限定したtoken発行 AuthZEN evaluation Access Token Resource Access (割愛)SSF: 契約終了イベント起点で→ 発行停止 / 再評価 / 失効 20