[解決済み] ASP.NET IdentityにおけるRolesとClaimのベストプラクティス
質問
私は
claims
で
ASP.NETIdentity
を使用する際のベストプラクティスのアイデアを得たい。
Roles and/or Claims
.
これだけ読んでも、まだこんな疑問が...。
Q: ロールはもう使わないのでしょうか?
Q: もしそうなら、なぜ Roles はまだ提供されているのですか?
Q:Claimsだけを使うべきですか?
Q: Roles & Claims を一緒に使うべきですか?
私の最初の考えは、それらを一緒に使うべきだということです。 私は
Claims
のサブカテゴリとして
Roles
をサポートします。
FOR EXAMPLE:
役割
会計
クレーム
: CanUpdateLedger、CanOnlyReadLedger、CanDeleteFromLedger。
Q: これらは相互に排他的であることを意図しているのですか?
Q: それとも、Claims ONLY にして、"fully-qualify" する方が良いのでしょうか?
Q: では、ベストプラクティスは何でしょうか?
例: ロールやクレームを一緒に使う
もちろん、このために独自の属性ロジックを書かなければなりませんが...。
[Authorize(Roles="Accounting")]
[ClaimAuthorize(Permission="CanUpdateLedger")]
public ActionResult CreateAsset(Asset entity)
{
// Do stuff here
return View();
}
例 クレームを完全に検証する
[ClaimAuthorize(Permission="Accounting.Ledger.CanUpdate")]
public ActionResult CreateAsset(Asset entity)
{
// Do stuff here
return View();
}
どのように解決するのですか?
ロールは、同じレベルのセキュリティ特権を共有するユーザーを集めた象徴的なカテゴリです。 ロールベースの承認では、まずユーザーを識別し、次にそのユーザーが割り当てられているロールを確認し、最後にそれらのロールをリソースへのアクセスを許可されているロールと比較する必要があります。
これに対して、クレームはグループベースではなく、むしろIDベースです。
から マイクロソフトのドキュメント :
ID が作成されると、信頼できる当事者によって発行された 1 つまたは複数の請求が割り当てられることがあります。クレームは名前と値のペアで、対象が何であるかを表し、対象が何ができるかを表すものではありません。
セキュリティチェックでは、1つ以上のクレームの値に基づいて、リソースにアクセスする権利を後で決定することができます。
あなたは は を同時に使用することもできますし、ある状況では 1 つのタイプを使用し、別の状況ではもう 1 つのタイプを使用することもできます。 これは主に、他のシステムとの相互運用や管理戦略に依存します。 例えば、管理者にとって、あるロールに割り当てられたユーザーのリストを管理することは、特定のクレームを割り当てられた人を管理することよりも簡単かもしれません。 クレームはRESTfulなシナリオで非常に有用です。クライアントにクレームを割り当てると、クライアントはリクエストごとにユーザ名とパスワードを渡す代わりに、クレームを提示して認証を受けることができるようになります。
関連
-
[解決済み] Razor View Engine : 式ツリーには、動的な操作を含めることができません。
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] ASP.NET Identity - HttpContextにはGetOwinContext用の拡張メソッドがありません。
-
[解決済み】リポジトリとサービスレイヤーの違い?
-
[解決済み】ASP .NET Identityにおけるクレームとは?
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み】ViewModelのベストプラクティス
-
[解決済み] Razorを使ってエンコードされていないJsonをViewに書き込むにはどうしたらいいですか?
-
[解決済み] Visual Studio 2012 または Visual Studio 2013 で古い MVC プロジェクトを開くにはどうすればよいですか?
-
[解決済み] MVC 5 アクセス クレーム アイデンティティ ユーザーデータ
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GET リクエストを許可するには、JsonRequestBehavior を AllowGet に設定します。
-
[解決済み] 既存のデータベースの選択されたテーブルからDbContextをScaffoldすることができますか[重複]。
-
[解決済み] ELMAHをASP.NET MVCの[HandleError]属性で動作させる方法は?
-
[解決済み] ASP.NET MVCのビューを文字列としてレンダリングする方法は?
-
[解決済み】Html5 data-* with asp.net mvc TextboxFor html attributes
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み】jQuery Ajaxの呼び出しとHtml.AntiForgeryToken()について)
-
[解決済み】リポジトリとサービスレイヤーの違い?
-
[解決済み】ASP.NET MVC Html.ValidationSummary(true) でモデルエラーが表示されない。
-
[解決済み] Razorを使ってエンコードされていないJsonをViewに書き込むにはどうしたらいいですか?