【WCF】授权策略详解

 

IAuthorizationPolicy 的 Evaluate 方法

由于IAuthorizationPolicy接口派生自IAuthorizationComponent接口,两个接口加起来,我们的自定义类必须实现以下三个成员:

1、Id——这个属性是字符串值,只读。它表示一个唯一值,以区别于其他授权相关的组件类,对于这个属性,最好的办法就是返回一个GUID值,这样就可以保证唯一性了。

2、Issuer——一个声明集,即ClaimSet,它表示该授权策略的发布者。通常这个属性可以直接返回System或Windows,这两个值都是ClaimSet类的静态成员。这样返回比较简单,你如果不希望使用系统默认声明集,也可以自己组装一个,一个声明集里面包含N个Claim对象,一个Claim表示一个声明。声明这玩意儿怎么解释呢。你就把它理解为一个符号吧,这种符号由type、resource,right三元素组成,type是字符串,可以使用标准的类型,这些标准由System.IdentityModel.Claims.ClaimTypes 类的静态属性公开,你可以直接用,比如URI,E-mail,Name、国家(Country)、DNS等。其实你看到了,声明类型有点像联系人资料的字段;除了标准值,你也可以自己定义值,反正是字符串,你可以随便,比如city表示城市,age表示年龄,RP表示人品值,等等。right是权限,System.IdentityModel.Claims.Rights类的静态属性公开两个标准值,同样,它也是字符串,所以你也可以定义非标准的值,比如delete、add、new、save等等,反正是个字符串就行。而resource的数据类型为Object,即你可以引用任意值,但最好是可以序列化的实例,毕竟它最后是变成XML的,resource是附加内容,可选。

3、Evaluate方法——这个是核心,在这个方法里面你要对访问者进行评估。客户端经过服务的身份验证后,一般会产生一个Identity对象,这个标识是存放到一个字典数据中的,这个后面会给大伙说。注意这个方法返回的是布尔值,如果返回false,那么,一旦授权上下文发生变化,比如添加了安全实体、其他标识,或者其他的授权策略也进行评估时,都会触发这个方法被调用。返回true,表示此次评估一次性通过,后面如果授权上下文发生变化,也不再调用;如果返回false,比较危险,有可能导致循环调用,一般来说,处理完成后,应该返回true。

 

细节的东西我们先不管,我们先来学会如何自定义授权策略,并且把自定义的策略放进服务中。

下面咱们定义两个授权策略,这里只为了演示,所以Evaluate方法里面不做什么。

Android培训,安卓培训,手机开发培训,移动开发培训,云培训培训

        		

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式