5

ASP.NET ID の認証と承認の仕組みを理解しようとしています。主張と役割がわかりました。関連するほぼすべてのブログ投稿またはここでの質問では、クレームを使用し、役割を避けることをお勧めします。この時点で私は混乱しています。ロールなしでクレームを使用するにはどうすればよいですか? (私は通常、ユーザーが登録された後に役割を割り当てます。)

どんな助けでも大歓迎です。

ありがとうございました

4

2 に答える 2

4

ロールもクレームであり、クレームはより一般的なものです。

関連するほぼすべてのブログ投稿、またはここでの質問では、クレームを使用し、役割を避けることをお勧めします。

正確なリンクを示していないため、正確には「役割に対する主張」ではないと推測することしかできません。

むしろ、「ロールベースのセキュリティ モデルよりもクレーム ベースのセキュリティ モデルを使用する」ことです。これは簡単に説明できます。ロールもクレームなので、クレームを使用するとロールがありますが、他のクレームもある可能性があります。

技術的には、クレームを作成しClaimsPrincipalて追加するRoleと、ASP.NET は期待どおりにロールを正しく認識します。Web フォーム承認、MVC 承認フィルター、およびその他のロールベースのものは通常どおり機能します。

技術的な詳細が必要な場合は、古いロール ベースのフォーム認証から新しいクレーム ベースの認証に簡単に切り替える方法を紹介している私のブログ エントリを参照してください。

http://www.wiktorzychla.com/2014/11/forms-authentication-revisited-for-net.html

特に、次のようにロール クレームを追加するだけです。

var identity = new ClaimsIdentity( "custom" );
identity.AddClaim( new Claim( ClaimTypes.Name, txtLogin.Text ) );
identity.AddClaim( new Claim( ClaimTypes.Role, "admin" ) );

var principal = new ClaimsPrincipal( identity );

// write the principal to cookie  

ただし、クレームによって得られるのは、 「ユーザーは 18 歳以上」、「ユーザーはフランス、ドイツ、またはスペイン出身」などの任意のクレームに基づいて認証を行う機能です。このような恣意的なステートメントは、必ずしも「役割」にマップされるわけではありませんが、完全な主張です。

この承認は、カスタム クレーム承認マネージャーを使用して行います。例はこちら

https://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthorizationmanager(v=vs.110).aspx

于 2015-04-12T20:33:56.397 に答える
1

クレームとロールは、それぞれ個別に使用できます。一方のロールは、所属するグループに基づいてアクセスを制御しますが、クレームは、ユーザーが自分自身について行うさまざまなステートメントに基づいてアクセスを制御します

次の 2 つのリンクは、ロールとクレーム ベースのセキュリティの概要と、属性内でクレームを使用する方法の例を示しています。これをコントローラー アクションにアタッチして、次のような承認を提供できますAuthorizeAttribute

ASP .NET Identity のクレームとは

ASP.NET ID による ASP.NET クレーム承認

于 2015-04-12T19:44:57.183 に答える