web-dev-qa-db-ja.com

ASP.NET Core Identityのロールクレームとカスタム認証のロールパーミッションの比較

ASP.NET Identityから少し離れて、アプリケーションのカスタム認証/承認システムを構築しているとしましょう。

完全な柔軟性のために、次の表が含まれます:
ユーザー
役割
許可
UserRoles
RolePermissions

上記を使用して、アプリケーションの本格的なユーザー管理セクションを作成できます。このセクションでは、管理者は、ユーザーAがロールBにアクセス権C、D、Fを持っていると言うことができます。

上記は以前から常に機能していましたが、ASP.NET Identityを使用してASP.NET Core MVCアプリケーションにギアを切り替えることができます。

MicrosoftがUserManagerでASP.NET Core Identityを使用して提供するすべてのものを利用しようとしていますが、ASP.NET Core Identity MVCの方法で、上記のことを引き続き実現したいと考えています。

知っていること:
UserManagerを使用して、ユーザーとロールおよびユーザーロールのCRUDページを簡単に実装できること。

私が理解しようとしていること:
「ロールが持つ権限/アクション」と同じ動作をどのように再現できますか?概念。

これに対する私の最初の推測では、ロールと組み合わせてクレームを使用することになります。クレームはロール、つまりRoleClaimsに割り当てられ、次にロールはユーザーに割り当てられます。

このようにして、Authorizeタグを使用してControllers/Actionメソッドの上のロールを簡単に確認できます。さらに、ユーザーのロールに "DeleteProduct"のクレームがない場合は、ページレベルでさらに「削除ボタンを非表示/表示」と言って、このような ビューベースの承認ドキュメント と言っています。

-

私はこれで正しい道を進んでいるかどうかを理解しようとしています。アドバイスや修正があれば役に立ちます。

9
Blake Rivell

この人はあなたの特定の問題に対して潜在的な解決策を持っているようです。

ASP.NET Core Identity 3を使用したユーザーロールのアクセス許可

クレームとポリシーの詳細

https://docs.Microsoft.com/en-us/aspnet/core/security/authorization/claims

基本的に

  1. 新しいユーザーを作る
  2. 新しい役割をする
  3. 新しい申し立てを行う
  4. 役割にクレームを追加
  5. ロールにユーザーを追加
  6. クレーム付きの新しいポリシーを作成します(サービスの構成中)
  7. ポリシーに対して承認されているユーザーを確認する

注:ASP.Net Core 2で動作するかどうか、または使用しているバージョンは完全にはわかりません。

10
George McKibbin