ASP.NET ID の認証と承認の仕組みを理解しようとしています。主張と役割がわかりました。関連するほぼすべてのブログ投稿またはここでの質問では、クレームを使用し、役割を避けることをお勧めします。この時点で私は混乱しています。ロールなしでクレームを使用するにはどうすればよいですか? (私は通常、ユーザーが登録された後に役割を割り当てます。)
どんな助けでも大歓迎です。
ありがとうございました
ASP.NET ID の認証と承認の仕組みを理解しようとしています。主張と役割がわかりました。関連するほぼすべてのブログ投稿またはここでの質問では、クレームを使用し、役割を避けることをお勧めします。この時点で私は混乱しています。ロールなしでクレームを使用するにはどうすればよいですか? (私は通常、ユーザーが登録された後に役割を割り当てます。)
どんな助けでも大歓迎です。
ありがとうございました
ロールもクレームであり、クレームはより一般的なものです。
関連するほぼすべてのブログ投稿、またはここでの質問では、クレームを使用し、役割を避けることをお勧めします。
正確なリンクを示していないため、正確には「役割に対する主張」ではないと推測することしかできません。
むしろ、「ロールベースのセキュリティ モデルよりもクレーム ベースのセキュリティ モデルを使用する」ことです。これは簡単に説明できます。ロールもクレームなので、クレームを使用するとロールがありますが、他のクレームもある可能性があります。
技術的には、クレームを作成し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 歳以上」、「ユーザーはフランス、ドイツ、またはスペイン出身」などの任意のクレームに基づいて認証を行う機能です。このような恣意的なステートメントは、必ずしも「役割」にマップされるわけではありませんが、完全な主張です。
この承認は、カスタム クレーム承認マネージャーを使用して行います。例はこちら
クレームとロールは、それぞれ個別に使用できます。一方のロールは、所属するグループに基づいてアクセスを制御しますが、クレームは、ユーザーが自分自身について行うさまざまなステートメントに基づいてアクセスを制御します
次の 2 つのリンクは、ロールとクレーム ベースのセキュリティの概要と、属性内でクレームを使用する方法の例を示しています。これをコントローラー アクションにアタッチして、次のような承認を提供できますAuthorizeAttribute
。