首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WCF自定义授权体系详解

在《原理篇》中,我们谈到WCF自定义授权体系具有两个核心的组件:AuthorizationPolicy和ServiceAuthorizationManager,已经它们是如何写作最终提供一种基于声明的授权实现...为了让自定义授权有深刻的理解,我们来进行一个简单实例来演示如何通过自定义这两个组件实现“非角色授权策略”。...此外,还有一点需要注意的是:在做出成功授权的情况下,需要设置当前的安全主体,因为不管这个安全主体是否需要,WCF总是会试图从当前AuthorizationContext的属性列表中去获取该安全主体。...是否能够按照我们自定义的策略进行授权。...而程序执行的最终结果是和我们自定义授权策略是一致的:用户Foo仅仅授予了调用Add和Substract操作的权限,而其余两个授权给用户Bar。

90080
您找到你想要的搜索结果了吗?
是的
没有找到

利用WCF自定义授权模式提供当前Principal

AuthorizationPolicy实现授权 四、通过自定义ServiceAuthorizationManager实现授权 一、创建自定义AuthorizationPolicy...二、创建自定义ServiceAuthorizationManager 接下来我们来通过自定义ServiceAuthorizationManager来实现与上面完全一样的功能,而已授权策略很简单,我们照例将该自定义...三、通过自定义AuthorizationPolicy实现授权 现在我们常见一个实例程序来应用我们创建的自定义AuthorizationPolicy,看看它是否能够起到我们期望的授权的作用。...四、通过自定义ServiceAuthorizationManager实现授权 在证明我们自定义的AuthorizationPolicy确实能够按照我们定义的策略进行授权之后,我们来试试我们自定义的ServiceAuthorizationManager...[WCF权限控制]利用WCF自定义授权模式提供当前安全主体[原理篇] [WCF权限控制]利用WCF自定义授权模式提供当前安全主体[实例篇]

773110

WCF的三种授权模式

通过这些介绍我们知道:如果我们在实施授权的时候,当前线程的安全主体能够被正确设置,我们就可以正确地完成授权。...基于相同的原理,对于WCF的服务授权,如果正确的安全主体能够在服务操作被执行之前被正确设置到当前线程,借助于这个安全主体,我们不但可以采用命令式编程的方式将授权逻辑写在相应的操作中,也可以采用声明式编程的方式将授权策略定义在应用在服务操作方法上的...为了解决这个问题,WCF为我们提供了不同的方案,我们把这些方案成为不同的“安全主体权限模式(Principal Permission Mode)”。具体来说,WCF支持如下三种安全主体权限模式。...帐号,将该帐号所在的用户组作为权限集; 采用ASP.NET Roles提供程序:通过ASP.NET角色管理机制借助于某个RoleProvider获取基于当前认证用户的角色列表,并将其作为权限集; 自定义权限模式...:自定义权限解析和安全主体创建机制。

73170

WCF技术剖析之二十: 服务在WCF体系中是如何被描述的?

同理,一个WCF服务的监听与执行同样需要通过一个进程来承载。我们将为WCF服务创建或指定一个进程的方式称为服务寄宿(Service Hosting)。...客户端行为体现的是WCF如何进行服务调用的方式,而服务端行为则体现了WCF的请求分发方式。...AddBindingParameters:为某个自定义绑定元素(Custom Binding Element)添加绑定参数,以指导或者确保绑定元素的正常操作,比如通过设置的绑定参数创建相应的信道 ApplyDispatchBehavior...ServiceBehaviorAttribute不仅仅是一个自定义特性(Custom Attribute),实际上它本身就是一个实现了IServiceBehavior的服务行为。...,比如用于实现与ASP.NET兼容的AspNetCompatibilityRequirementsAttribute;用于进行限流控制的ServiceThrottlingBehavior;用于进行服务授权

96060

WCF客户端运行时架构体系详解

此外,几乎所有的WS-*规范在WCF的实现都是通过自定义信道来控制消息交换来完成的,所以这也要求客户端和服务端必须具有对等的信道设置; 契约(Contract):契约最终决定了基于某个操作的服务调用应该采用的消息交换模式...二、客户端架构体系 WCF服务端架构体系的建立始于ServiceHost的开启,而整个架构体系根据创建ServiceHost时初始化的用于描述服务的ServiceDescription对象来构建的。...与此类似,当我们开启ChannelFactory的时候,WCF会根据之前创建的ServiceEndpoint来构建客户端的运行时架构体系。...下图揭示了WCF客户端框架体系的大体结构。在该架构体系中,表示客户端运行时的ClientRuntime是其核心。...我们可以自定义参数检器实现针服务调用前对输入参数的验证,以及服务调用后对返回值和输出参数的验证。 WCF客户端运行时架构体系详解[上篇] WCF客户端运行时架构体系详解[下篇]

1.3K110

WCF服务端运行时架构体系详解

如果你阅读了《WCF技术剖析(卷1)》第5章《序列化与数据契约》,你应该很清楚WCF通过一个被称为消息格式化器(MessageFormatter)组件来完成序列化和反序列化工作。...举个例子,在《WCF技术剖析(卷1)》的第10章,我分别采用自定义ClientMessageInspector和CallContextInitializer实现了上下文信息从客户端到服务端的自动传播。...我们通常通过自定义ParameterInspector的方式实现操作执行前对输入参数的检验,以及操作执行后对返回值/输出参数的检验。...它提供了于WCF的集成,使我们可以将这些独立的验证策略通过声明或者配置的方式应用到相应的操作上,最终实现自动的参数验证。而最终完成验证的就是自定义的ParameterInspector。...WCF服务端运行时架构体系详解[上篇] WCF服务端运行时架构体系详解[中篇] WCF服务端运行时架构体系详解[下篇] WCF服务端运行时架构体系详解[续篇]

69870

WCF服务端运行时架构体系详解

整个服务端运行时架构体系的核心,同时也是对WCF服务端服务模型进行扩展重点考虑的对象。...RoleProvider和在自定义安全主体权限模式下自定义授权策略(通过ExternalAuthorizationPolicies属性表示)。...如果你阅读了《深入剖析授权WCF中的实现[共14篇]》,相对对这四个对象不会感到陌生。 2、服务实例上下文 服务端框架对服务调用请求的处理最终必然体现在服务实例的创建和操作方法的调用。...但是你可以通过自定义一个被称为实例提供者的组件来让WCF服务端分发系统按照你希望的方式创建你想要的实例作为最终的服务实例。...服务端运行时架构体系详解[上篇] WCF服务端运行时架构体系详解[中篇] WCF服务端运行时架构体系详解[下篇] WCF服务端运行时架构体系详解[续篇]

76980

使用自定义行为扩展 WCF

您可以使用这些扩展点来实现各种自定义行为,包括消息或参数验证、消息日志记录、消息转换、自定义序列化/反序列化格式、输出缓存、对象共用、错误处理和授权等。...图 1 WCF 运行时体系结构  调度程序/代理扩展 调度程序和代理都提供了大量的扩展点,您可以在其中插入自己的代码;这些扩展常被称为侦听器,因为它们允许您侦听默认的运行时执行行为。...图 2 显示了客户端代理体系结构及可用的扩展点。代理的主要作用是将调用方提供的对象(参数)转换为 WCF 消息对象,然后将后者提供给底层通道堆栈进行网络传输。 ?...接着,代理使用序列化程序将提供的参数转换为 WCF 消息对象(图中步骤 2)。此时,您可以使用一个自定义的格式化程序对象来自定义序列化过程。...您的自定义调度程序/代理扩展可以使用这些集合存储(并查询)整个管道中用户定义的状态。 总结 WCF 提供了一个强大的扩展体系结构,可用于进行大量的运行时自定义

1.7K70

WCF服务端运行时架构体系详解

在这篇文章中,我们对信道分发器本身作一个深入的了解,首先来看看它具有哪些可供扩展的组件,以及我们可以针对信道分发器对WCF实现哪些可能的扩展。...IChannelInitializer 2: { 3: void Initialize(IClientChannel channel); 4: } 从扩展性角度来讲,你可以将自定义的...你也可以自定义信道初始化器改变创建的信道状态。上述的关于信道分发器的结构可以简单地通过下图表示。 ?...信道分发器结构 为了实现自定义的异常处理和流量扩展等功能,你可以将自定义的相关组件应用到信道分发器中。另一方面,信道分发器本身具有一些用于控制器运行行为的属性。...服务端运行时架构体系详解[上篇] WCF服务端运行时架构体系详解[中篇] WCF服务端运行时架构体系详解[下篇] WCF服务端运行时架构体系详解[续篇]

551110

WCF 技术剖析之三十三:你是否了解WCF事务框架体系内部的工作机制?

整个WCF事务还有一个重要的步骤需要实现:如何将通过OperationBehaviorAttribute特性标记为TransactionRequired的操作的执行自动纳入到流入的事务之中。...Transaction transaction, Message message); 5: public Transaction Transaction { get; } 6: } WCF...至于事务参与者之间的协调问题,已经不属于WCF体系管辖的范围了,DTC会接收余下的工作。 如果我们将上面的实现通过代码的形式写出来,相信读者的理解会更加深刻。...场景3: WCF客户端和服务端部属于不同的主机,将OleTxUpgradeEnabled设置为0的境况下,DTC之间采用WS-AT进行事务处理; 场景4:WCF客户端调用另一平台服务,DTC和服务所在主机的事务管理器...(TM:Transaction Manager)采用WS-AT进行事务处理;其他平台客户端调用WCF服务,DTC和TM之间也采用WS-AT进行事务处理。

56270

WCF中并发(Concurrency)与限流(Throttling)体系深入解析系列

所以,WCF一方面需要允许让单个服务实例并发处理接收到的多个请求,同时也需要设置一道闸门控制并发的数量。WCF的流量限制(Throttling)体系为你创建了这道闸门。...[第2篇]并发中的同步--WCF并发体系的同步机制实现 在《WCF 并发的本质》中,我们谈到了WCF提供的三种不同的并发模式,使开发者可以根据具体的情况选择不同的并发处理的策略。...串行执行即同步执行,在WCF并发框架体系中,这样的同步机制是如何实现的呢?...同步上下文在WCF并发体系的内部是如何影响服务操作的执行的呢?这实际上涉及到WCF的一个话题,即线程的亲和性(Thread Affinity),下篇将为你剖析WCF线程亲和机制的本质。...[第7篇] 控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[上篇][下篇] WCF是一个基于多线程的消息监听、接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求

73570
领券