3

我正在我的办公室开展第一个项目,我们将使用“Windows Identity Foundation”和基于声明的授权。为此,Microsoft .net 提供了 ClaimsAuthorizationManager 抽象类。为了使用这个类,你重写了两个方法:构造函数和CheckAccess(context as ClaimsAuthorizationContext).

构造函数设置一切;然后当用户访问某些东西(例如网页)时,CheckAccess会使用一个参数调用该参数,该参数指示用户、要访问的资源以及要对资源采取的操作。例如,CheckAccess可以调用以查看是否Bob应授予用户对资源的访问权限http://www.mysite.com/SecretPage.aspx以执行操作GETCheckAccess简单地返回trueor false。Windows Identity Foundation 让我们可以灵活地实现CheckAccess几乎任何可以想象的方式!

在 Microsoft 提供的代码示例中,CheckAccess配置为仅当用户的生日声明表明年龄为 21 岁或以上时才允许访问该用户。此策略在 web.config 中以纯文本形式给出,并在ClaimsAuthorizationManager构造函数中读取。

在我的办公室里,我们使用 SQL 来跟踪几乎所有的数据,就我而言。ClaimsAuthorizationManager我相信编程从 SQL 读取数据以确定用户是否可以访问资源是有意义的。然而,有无数不同的可能政策。我想创建一个ClaimsAuthorizationManager在当前项目中有用的,并且我可以在未来进行构建和改进,而不必撕掉和替换我今天创建的项目。

当我继续这个项目时,最重要的事情是什么?

更新:我一直在研究将要求的索赔政策表示为字符串的系统。我使用二叉树逻辑将策略组合在一起。我维护一个与“资源”和“行动”相关的声明数据库。

这里有没有其他人建立了 ClaimsAuthorizationManager 类?

4

1 回答 1

1

我认为令人鼓舞的是,您期待尝试不编写死代码,但我认为您正在超越自己。

您需要生成一个或多个被视为丢弃的尖峰,以便您自己确定对您的特定场景有意义的东西。

也就是说,如果您的所有规则都在数据库中,请创建一个从配置文件中读取 sproc 名称的 sproc 基础 CAM。CheckAccess 参数不会改变,因此 sproc 签名可以是不可变的,允许您根据需要切换它们。

于 2010-02-09T04:44:25.107 回答