我正在我的办公室开展第一个项目,我们将使用“Windows Identity Foundation”和基于声明的授权。为此,Microsoft .net 提供了 ClaimsAuthorizationManager 抽象类。为了使用这个类,你重写了两个方法:构造函数和CheckAccess(context as ClaimsAuthorizationContext)
.
构造函数设置一切;然后当用户访问某些东西(例如网页)时,CheckAccess
会使用一个参数调用该参数,该参数指示用户、要访问的资源以及要对资源采取的操作。例如,CheckAccess
可以调用以查看是否Bob
应授予用户对资源的访问权限http://www.mysite.com/SecretPage.aspx
以执行操作GET
。 CheckAccess
简单地返回true
or false
。Windows Identity Foundation 让我们可以灵活地实现CheckAccess
几乎任何可以想象的方式!
在 Microsoft 提供的代码示例中,CheckAccess
配置为仅当用户的生日声明表明年龄为 21 岁或以上时才允许访问该用户。此策略在 web.config 中以纯文本形式给出,并在ClaimsAuthorizationManager
构造函数中读取。
在我的办公室里,我们使用 SQL 来跟踪几乎所有的数据,就我而言。ClaimsAuthorizationManager
我相信编程从 SQL 读取数据以确定用户是否可以访问资源是有意义的。然而,有无数不同的可能政策。我想创建一个ClaimsAuthorizationManager
在当前项目中有用的,并且我可以在未来进行构建和改进,而不必撕掉和替换我今天创建的项目。
当我继续这个项目时,最重要的事情是什么?
更新:我一直在研究将要求的索赔政策表示为字符串的系统。我使用二叉树逻辑将策略组合在一起。我维护一个与“资源”和“行动”相关的声明数据库。
这里有没有其他人建立了 ClaimsAuthorizationManager 类?