web-dev-qa-db-ja.com

ASP .NET Identityのクレームは何ですか

新しいASP.NET Identity Coreのクレームメカニズムの意味を誰かが説明できますか?

ご覧のとおり、AspNetUserLoginsテーブルがあり、UserIdLoginProvider、およびProviderKeyが含まれています。

しかし、データがAspNetUserClaimsテーブルにいつ追加されるのか、またこのテーブルがどのような状況で使用されるのかについて、私はまだ理解または情報を見つけることができませんか?

142
FSou1

新しいASP.NET Identity Coreでクレームメカニズムは何を意味しますか?

ロールとクレームに基づく2つの一般的な承認アプローチがあります。

ロールベースのセキュリティ

ユーザーは、ユーザーがアクセス権を取得する際に使用する1つ以上のロールに割り当てられます。また、ユーザーをロールに割り当てることにより、ユーザーはそのロールに定義されたすべてのアクセス権をすぐに取得します。

クレームベースのセキュリティ

クレームベースのIDはクレームのセットです。クレームは、エンティティ(ユーザーまたは別のアプリケーション)が自分自身について行うステートメントであり、単なるクレームです。たとえば、申し立てリストには、ユーザーの名前、ユーザーのメール、ユーザーの年齢、ユーザーのアクションの承認を含めることができます。役割ベースのセキュリティでは、ユーザーは資格情報をアプリケーションに直接提示します。クレームベースのモデルでは、ユーザーは資格情報ではなくクレームをアプリケーションに提示します。クレームが実用的な価値を持つためには、アプリケーションが信頼するエンティティからのものでなければなりません。

以下の手順は、クレームベースのセキュリティモデルで発生するシーケンスを示しています。

  1. ユーザーがアクションを要求します。証明書利用者(RP)アプリケーションはトークンを要求します。
  2. ユーザーは、RPアプリケーションが信頼する発行機関に資格情報を提示します。
  3. 発行機関は、ユーザーの資格情報を認証した後、クレーム付きの署名済みトークンを発行します。
  4. ユーザーは、RPアプリケーションにトークンを提示します。アプリケーションは、トークン署名を検証し、クレームを抽出し、クレームに基づいて、リクエストを受け入れるか拒否します。

しかし、データがAspNetUserClaimsに追加されると、このテーブルがどのような状況に使用されるのか、私はまだ情報を理解して見つけることができませんか?

役割ベースのセキュリティが使用されていない状況で、クレームベースのセキュリティを使用することを選択した場合、AspNetUserClaimsテーブルを利用する必要があります。 ASP.NET Identityでクレームを使用する方法については、以下のリンクを参照してください。

http://kevin-junghans.blogspot.com/2013/12/using-claims-in-aspnet-identity.html

更新

役割ベースのセキュリティを使用する必要があるのはいつですか?例をいくつか書いていただけますか?

BではなくAを使用する場合とは異なり、ロールベースまたはクレームベースのセキュリティを使用する、または使用しない非常に明確な状況はありません。

ただし、クレームベースのアクセス制御により、承認ルールをコアビジネスロジックからより適切に分離できます。承認規則が変更されても、コアビジネスロジックは影響を受けません。クレームベースのアプローチを使用したい場合があります。

時にはクレームは必要ありません。これは重要な免責事項です。内部アプリケーションのホストを持つ企業は、統合Windows認証を使用して、クレームによって提供される多くの利点を実現できます。 Active Directoryは、ユーザーIDを保存するのに非常に役立ちます。KerberosはWindowsの一部であるため、アプリケーションに多くの認証ロジックを含める必要はありません。作成するすべてのアプリケーションが統合Windows認証を使用できる限り、既にIDユートピアに到達している可能性があります。ただし、Windows認証以外のものが必要になる理由はたくさんあります。 Windowsドメインにアカウントを持っていない人が使用するWeb対応アプリケーションがあるかもしれません。もう1つの理由は、会社が別の会社と合併し、信頼関係を持たない(および信頼しない)2つのWindowsフォレスト間で認証に問題があることです。おそらく、.NET Framework以外のアプリケーションを所有する別の会社とIDを共有したい場合や、異なるプラットフォーム(Macintoshなど)で実行されているアプリケーション間でIDを共有する必要がある場合があります。これらは、クレームベースのIDが適切な選択である場合のほんの一部です。

詳細については、 http://msdn.Microsoft.com/en-us/library/ff359101.aspx をご覧ください。

173
Lin

上記で@Linが言ったことをさらに追加します。私は具体的に質問に言及しています:

役割ベースのセキュリティを使用する必要があるのはいつですか?例をいくつか書いていただけますか?

技術者と管理者がいる計時システムがある場合を考えます。毎週の終わりに、技術者は、その週に働いた職人の時間を示す計時情報を含むレポートを手配する必要があります。そのようなシステムは多くの場合、従業員に過払いや過少支払いを望まないため、最終レポートを提出する前に修正または修正する必要があります。 Role-BasedManager Roleを作成することにより、マネージャーと技術者に対してTechnician Roleアプローチを使用できます。ただし、Manager Roleは職人の計時情報にアクセスして編集する機能を備えています。一方、Technician Roleには、これらの情報にアクセスする機能がなくてもかまいません。しかし、ここが興味深い部分です。マネージャーはクレームを作成し、技術者がClocking Systemsにアクセスしてレポートを作成できるようにすることができます。したがって、編集を伴わないアクセスに対してのみ申し立てを行うか、アクセスおよび編集機能を使用して申し立てを行うことができます。

まあ、デフォルトでは、マネージャーとして、技術者がアクセスできない情報にアクセスできます。しかし、私はいつもオフィスの周りにいるわけではありませんか?私がいないときでも彼が仕事をすることができるように私は何ができますか?これを解決するために、システムには、特定の情報へのアクセス権のない人々に対するクレームを作成するための機能がマネージャーに備わっています。これらはERPシステムのどこにでもよく見られます。一部のモジュールにアクセスできないユーザーは、昇格するとERPシステムのより多くのモジュールに許可を与え、時には同じユーザーロールを保持します。

これは、クレームと役割をさらに理解するために検討できる例です。

3
Mosia Thabo