認可@認証/認可¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. 認可とは¶
認証済みのユーザーのリクエストに応じてリソース操作を実施し (Enforcement) 、認可スコープに基づいて許否を決定します (Decision) 。
基本的に、認可の実装は認証に依存する。

02. アプリケーションで実装する場合¶
アプリケーションで実装する場合とは¶
アプリケーションで、認可処理を実装する。
クリーンアーキテクチャであれば、ドメインサービスやアプリケーションサービスである。
エンドポイントの分割¶
テナントが存在するアプリケーションで、テナント横断的な管理者ロールとそれ以外のロールを定義する場合を考える。
管理者ロールでは操作できるデータが横断的になる。
管理者ロールとそれ以外の認可ロジックを一緒にすると複雑になるため、管理者エンドポイントを別に定義しつつ、管理者用の認可ロジックは切り分けることが適切である。
| テナント横断的な管理者ロール | 各テナントのロール | |
|---|---|---|
| GET | ・/admin/organizations/{orgId}/orders・ /admin/organizations/{orgId}/orders/{id} |
・/orders・ /orders/{id} |
| POST | /admin/organizations/{orgId}/orders |
/orders |
| PUT | /admin/organizations/{orgId}/orders/{id} |
/orders/{id} |
| DELETE | /admin/organizations/{orgId}/orders/{id} |
/orders/{id} |
03. 委譲する場合¶
委譲する場合とは¶
認可処理を実行してくれるツール (例:Open Policy Agentなど) に委譲する。