会社のシステムをマイクロサービスベースのシステムにリファクタリングする予定です。このマイクロサービスは、社内の社内アプリケーションと、必要に応じてサードパーティパートナーによって使用されます。予約用、製品用など
ロールとスコープをどのように処理するかは不明です。管理者、エージェント、エンドユーザーなどの3つの基本的なユーザーロールを作成し、必要に応じてコンシューマーアプリがスコープを微調整できるようにするという考え方です。
- 管理者は、デフォルトで(会社の)すべてのリソースを作成、更新、読み取り、削除できます。
- エージェントは、会社のデータを作成、更新、および読み取ることができます。
- エンドユーザーはデータを作成、更新、削除、および読み取ることができますが、エージェントまたは管理者と同じエンドポイントにアクセスすることはできません。また、エージェントや管理者と同じレベルではなく、データを作成または変更することもできます。たとえば、エンドユーザーはアカウント情報を更新または読み取ることができます。これは、エージェントができるようになりますが、管理者ノートを表示または更新することはできません。
デフォルトでは、エージェントは会社の各リソースを作成、読み取り、更新でき、それはトークン/セッションに要求できる最大スコープですが、クライアント(APIコンシューマー)アプリケーションの開発者は、エージェントの1人が特定のリソースのみを読み取り、作成します。
内部セキュリティでこれを処理し、データベースにデータを書き込むようにするか、クライアントにスコープを小さくしてトークンを要求することで内部的に処理させ、どのエージェントがデータベースにどのスコープを持つかを書き込むようにすることをお勧めします?この方法では、トークンスコープのみを追跡する必要があります。
この欠点は、チームが内部アプリケーションで微調整されたアクセスメカニズムを作成する必要があることです。
この考え方では、マイクロサービスとその承認システムはクライアントのニーズに煩わされるべきではありません。なぜなら、それらは消費者であり、システムの一部ではないからです。
この委任は良いアプローチですか?
payment:[read]
、売り手が持っていpayment: [create]
ます。この場合、許可を集約しますか?