LogtoでRBACをマスターする:包括的な実世界の例
この記事は、Logtoでの役割ベースのアクセス制御(RBAC)をマスターするための包括的なガイドを提供し、オンライン書店の実世界の例を用いて、主要なユーザーロール、スコープ、およびLogtoのRBAC機能をフロントエンドおよびバックエンドアプリケーションに統合する方法を探ります。これにより、セキュリティとアクセス制御の強化が図られます。
はじめに
アクセス制御とセキュリティは、ユーザが適切なリソースにアクセスできるようにするという点で、現代のアプリケーションにとって重要な側面であり、Logto の役割ベースのアクセス制御(RBAC)は、開発者がアプリケーションのアクセス制御とセキュリティを効率的に管理する一方で、この記事では実世界の例を用いてLogtoのRBACの強力な特性を探ることで、これらの概念をプロジェクトに理解し適用するのに役立つ方法を提供します。
フロントエンドとバックエンドのコードスニペットの両方を見ることで、アプリケーションスタックにLogtoのRBACを統合する多角的な視点を得ることができます。この記事を読み終えると、プロジェクトのセキュリティとアクセス制御を強化するために、LogtoのRBAC機能を活用できるようになるでしょう。
BookHarberの紹介:オンライン書店の利用ケース
LogtoのRBAC機能を効果的にデモンストレートするために、実世界の例:BookHarber、オンライン書店を使用します。BookHarberは、顧客とスタッフのための幅広い機能を提供し、シームレスで安全なショッピング体験を確保します。
BookHarberの主な機能には以下のようなものがあります:
- 書籍の閲覧と購入:ユーザは、様々なジャンルや著者から成る多様なコレクションから、簡単に書籍を検索して購入することができます。
- 注文管理とロジスティクス追跡:登録済みの顧客は自分の注文を管理し、発送を追跡し、購入に関する最新情報を受け取ることができます。
- 特別オファーと祝日活動:BookHarberは、特別なイベントや祝日を通じてその顧客基盤に参加して報酬を得るための排他的なディスカウントとプロモーションを提供します。
- カスタマーサポート:これらに対処するためのサポートチケットを開くことができ、BookHarberスタッフから迅速なアシスタンスを受けることができます。
- カスタマーマネジメント:異なる役割を持つスタッフメンバーはプラットフォームのさまざまな側面、例えば顧客アカウント、注文処理、問題解決を管理する能力を有しています。
役割
BookHarberエコシステムでは、いくつかの主要なユーザーロールを特定することができます、例えば:
- ゲスト:ウェブサイトを閲覧し、書籍を検索し、特別オファー を視聴できる未登録のユーザ。
- 顧客:書籍を購入し、注文を管理し、ロジスティクスを追跡し、サポートチケットを開くことができる登録ユーザ。
- ストア管理者:プラットフォームの全体的な管理と運用を監督するスタッフメンバー。フルアクセスを持っています。
- 書籍マネージャー:書籍とカテゴリ管理を担当するスタッフメンバー。
- カスタマーサービスエージェント:サポートチケットに対応するスタッフメンバー。
- サードパーティーロジスティクスプロバイダー:注文の出荷と追跡を管理する外部パートナー。
- マーケティングスタッフ:BookHarber を宣伝し、特別オファーとイベントを管理する責任を負ったスタッフメンバー。
BookHarber REST API用のスコープ設計
BookHarberでLogtoのRBACシステムを効果的に実装するためには、各REST APIに対応するスコープを設計する必要があります。スコープは、各APIエンドポイントに対して特定の役割がどの程度のアクセスを持つべきかを定義する権限です。各ユーザーロールに適切なスコープを割り当てることで、ユーザーが彼らの役割に関連するアクションとリソースだけにアクセスできるようにすることができます。
以下のREST APIのためにスコープを設計しましょう:
- カテゴリAPI:
create:categories
:POST /categorieswrite:categories
:PUT /categories/:iddelete:categories
:DELETE /categories/:idlist:categories
:GET /categories
- 書籍API:
create:books
:POST /bookswrite:books
:PUT /books/:iddelete:books
:DELETE /books/:idlist:books
:GET /booksread:books
:GET /books/:id
- 顧客API:
list:customers
:GET /customerswrite:customers
:PUT /customers/:iddelete:customers
:DELETE /customers/:idread:customers
:GET /customers/:id
- 注文API:
create:orders
:POST /orderslist:orders
:GET /ordersread:orders
:GET /orders/:idwrite:orders
:PUT /orders/:id
- イベントAPI:
create:events
:POST /eventswrite:events
:PUT /events/:idlist:events
:GET /eventsdelete:events
:DELETE /events/:id
- 注文トラックAPI:
read:orderTracks
:GET /orders/:id/trackscreate:orderTracks
:POST /orders/:id/trackswrite:orderTracks
:PUT /orders/:id/tracks/:trackId