Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 构建定制的好方法是什么;索赔授权经理“;Windows身份基础类?_.net_Asp.net_Wif_Windows Identity_Claims Based Identity - Fatal编程技术网

.net 构建定制的好方法是什么;索赔授权经理“;Windows身份基础类?

.net 构建定制的好方法是什么;索赔授权经理“;Windows身份基础类?,.net,asp.net,wif,windows-identity,claims-based-identity,.net,Asp.net,Wif,Windows Identity,Claims Based Identity,我正在我办公室的第一个项目中工作,我们将使用基于声明的授权的“Windows Identity Foundation”。为此,Microsoft.net提供了ClaimsAuthorizationManager抽象类。为了使用这个类,您重写了两个方法:构造函数和CheckAccess(上下文作为ClaimsAuthorizationContext) 建造师设置一切;然后,当用户访问某个内容(例如网页)时,CheckAccess将被调用,其中包含一个参数,该参数指示用户、要访问的资源以及要对该资源

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

建造师设置一切;然后,当用户访问某个内容(例如网页)时,
CheckAccess
将被调用,其中包含一个参数,该参数指示用户、要访问的资源以及要对该资源执行的操作。例如,可以调用
CheckAccess
,查看是否应授予用户
Bob
访问资源的权限
http://www.mysite.com/SecretPage.aspx
执行操作
GET
CheckAccess
只返回
true
false
。Windows身份基础使我们能够灵活地执行<代码>检查访问< /代码>几乎任何可想象的方式! 在Microsoft提供的代码示例中,
CheckAccess
配置为仅当用户的生日声明表明其年龄为21岁或以上时才允许访问。此策略在web.config中以纯文本形式给出,并在
ClaimsAuthorizationManager
构造函数中读取

在我的办公室里,我们使用SQL跟踪几乎所有的数据,所以在我的例子中。我认为,对
ClaimsAuthorizationManager
进行编程以从SQL中读取数据以确定用户是否可以访问资源是有意义的。然而,有无数不同的可能政策。我想创建一个
ClaimsAuthorizationManager
,它将在当前项目中非常有用,并且我可以在未来继续构建和改进,而不必破坏和替换我今天创建的项目

在我进行这个项目时,最重要的事情是什么

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


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

我认为这是令人鼓舞的,您期待着尝试不编写死代码,但我认为您已经超越了自己

您需要生成一个或多个被视为一次性的尖峰,以确定对您的特定场景有何意义


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

我终于收到了一个建议。我自己也提出了一种将访问页面或资源的策略表示为字符串的方法,例如minAge(30)+roleRequired(“主管”),这意味着用户必须至少30岁或担任“主管”角色。我编写了一些二叉树逻辑来将策略分组在一起。我发现更困难的是,如果用户想要执行操作a或资源R,那么我们如何确定用户必须声明的策略?我已经编写了一些代码。我可以编写和解析一个字符串,表示用户声明必须满足的条件,但我很难弄清楚如何将策略与资源和操作关联起来。。。我认为在我的数据库中,它需要多个表来指示“资源”和“操作”到“策略”的映射。我确实有一个ClaimsAuthorizationManager的工作原型,它要求用户扮演访问指定网页的角色。