コンテンツにスキップ

認可@認証/認可

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. 認可とは

認証済みのユーザーのリクエストに応じてリソース操作を実施し (Enforcement) 、認可スコープに基づいて許否を決定します (Decision) 。

基本的に、認可の実装は認証に依存する。

authorization


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など) に委譲する。