新しいASP.NET Identity Coreのクレームメカニズムの意味を誰かが説明できますか?
ご覧のとおり、AspNetUserLogins
テーブルがあり、UserId
、LoginProvider
、およびProviderKey
が含まれています。
しかし、データがAspNetUserClaims
テーブルにいつ追加されるのか、またこのテーブルがどのような状況で使用されるのかについて、私はまだ理解または情報を見つけることができませんか?
新しいASP.NET Identity Coreでクレームメカニズムは何を意味しますか?
ロールとクレームに基づく2つの一般的な承認アプローチがあります。
ロールベースのセキュリティ
ユーザーは、ユーザーがアクセス権を取得する際に使用する1つ以上のロールに割り当てられます。また、ユーザーをロールに割り当てることにより、ユーザーはそのロールに定義されたすべてのアクセス権をすぐに取得します。
クレームベースのセキュリティ
クレームベースのIDはクレームのセットです。クレームは、エンティティ(ユーザーまたは別のアプリケーション)が自分自身について行うステートメントであり、単なるクレームです。たとえば、申し立てリストには、ユーザーの名前、ユーザーのメール、ユーザーの年齢、ユーザーのアクションの承認を含めることができます。役割ベースのセキュリティでは、ユーザーは資格情報をアプリケーションに直接提示します。クレームベースのモデルでは、ユーザーは資格情報ではなくクレームをアプリケーションに提示します。クレームが実用的な価値を持つためには、アプリケーションが信頼するエンティティからのものでなければなりません。
以下の手順は、クレームベースのセキュリティモデルで発生するシーケンスを示しています。
しかし、データが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 をご覧ください。
上記で@Linが言ったことをさらに追加します。私は具体的に質問に言及しています:
役割ベースのセキュリティを使用する必要があるのはいつですか?例をいくつか書いていただけますか?
技術者と管理者がいる計時システムがある場合を考えます。毎週の終わりに、技術者は、その週に働いた職人の時間を示す計時情報を含むレポートを手配する必要があります。そのようなシステムは多くの場合、従業員に過払いや過少支払いを望まないため、最終レポートを提出する前に修正または修正する必要があります。 Role-Based
とManager Role
を作成することにより、マネージャーと技術者に対してTechnician Role
アプローチを使用できます。ただし、Manager Role
は職人の計時情報にアクセスして編集する機能を備えています。一方、Technician Role
には、これらの情報にアクセスする機能がなくてもかまいません。しかし、ここが興味深い部分です。マネージャーはクレームを作成し、技術者がClocking Systemsにアクセスしてレポートを作成できるようにすることができます。したがって、編集を伴わないアクセスに対してのみ申し立てを行うか、アクセスおよび編集機能を使用して申し立てを行うことができます。
まあ、デフォルトでは、マネージャーとして、技術者がアクセスできない情報にアクセスできます。しかし、私はいつもオフィスの周りにいるわけではありませんか?私がいないときでも彼が仕事をすることができるように私は何ができますか?これを解決するために、システムには、特定の情報へのアクセス権のない人々に対するクレームを作成するための機能がマネージャーに備わっています。これらはERPシステムのどこにでもよく見られます。一部のモジュールにアクセスできないユーザーは、昇格するとERPシステムのより多くのモジュールに許可を与え、時には同じユーザーロールを保持します。
これは、クレームと役割をさらに理解するために検討できる例です。