2012-02-03 8 views
3

クレームの定義方法を理解するのに苦労しています。ウェブ上にはクレームの作成に関する多くの情報がありますが、それに同意するものはありません。WIF:カスタムクレーム

  • ClaimType
  • ClaimValue
  • ValueTypeに
  • 右あなたが主張を作成するシナリオを考える

意味A:私は別の記事では、クレームの4つの属性を発見しましたユーザーはUserオブジェクトを編集する権利がありますが、これらの属性を設定する正しい方法は何ですか?

また、WIFでは、「権利」属性のプロパティはないようです。 「権利」はWCFのコンテキストでのみ使用されていますか?

私は混乱しています。

編集:

ご回答ありがとうございます。

1-ClaimType =編集、ClaimValue =ユーザー

2-ClaimType =アクション、ClaimValue = EditUser

オプション:このもう少しコンクリートを作るために、私は現在、私のカスタム要求のための2つのオプションを見ています1つはより多くの "クレームベース"であり、より "ロールベース"に見える選択肢であるように思われる。思考?

答えて

1

申し訳ありませんが、私はそれがコンセプトを誤って使用していると思います。

独自のクレームセットにはユーザー権利が含まれていません。むしろ:

クレームセット+ ポリシー =ユーザー権利。

通常、クレームベースのアプリケーションでは、承認されたユーザーのクレームセットにポリシーを適用して承認を決定します。ロールベースのアクセスが最も一般的であるため、これらの決定はUser.IsInRole( "Manager")と同じくらい簡単で、ユーザーにはClaimType = "http://schemas.microsoft.com/ ws/2008/06/identity/claim/role "とClaimValue =" Manager "を選択します。

オンライン酒屋では、21歳以上であることが必要な場合があります。その場合、年齢の主張をチェックします。しかし、このウェブサイトのカナダ版には、年齢制限が18になるような別のポリシーが適用されます。このような「権利」がクレーム自体を介して伝達された場合、このようなポリシーの柔軟性は不可能です。

4

.Netには2種類の異なるClaimタイプがあります。 1つはWIF(Microsoft.IdentityModel.Claims)、もう1つはSystem.IdentityModel.Claimsで、WCF pre-WIFで使用されています(実際はWCTの一部ではありません)。あなたが言及したように、System.IdentityModel.Claims.ClaimにはRightというプロパティがあります。

私はWIFとWIFの有無にかかわらずWIFとASP.Netのクレームアプローチを使用しました.WIFプログラミングモデルは、この2つの方がはるかに単純です。

説明するユーザー編集シナリオでは、適切な名前のロールを定義します。 UserEditorはOKですが、非常に具体的に聞こえます。それらのユーザーに付与するすべてのアクセス許可のコレクションを見て、適切な集計名(おそらくUserAdministrator?)を提示する必要があります。

これらのユーザーには、ロールタイプ(http://schemas.microsoft.com/ws/2008/06/identity/claims/roleまたは)のロールクレームを追加する必要があります。 IDプロバイダがアプリケーションの外部にあり、発行するクレームを制御できない場合は、新しいロールクレームを追加して、発行されたクレームセットを変換するためにカスタムClaimsAuthenticationManagerを実装する必要があります。

あなたはこのようなPrincipalPermissionAttribute何かをへのアクセスを許可したい操作を飾ることができます次に:

[PrincipalPermission(SecurityAction.Demand、役割=「UserAdministratorを」)]このフレームワークはかなり柔軟性がありますASP.Net、WCF、または通常の.Net開発ではさまざまな方法で使用できます。あなたの質問は、例について非常に具体的な答えを出すための多くの文脈を与えるものではありません。

関連する問題