我有一个WCF服务,其中多个操作作为RESTful API公开。服务上的大多数操作不需要身份验证/授权,但有一两个操作。我需要使用的授权策略不受我的控制,运行起来很昂贵。因此,我想避免在那些不需要它的操作上使用它。
配置中定义的授权策略似乎必须适用于整个服务 - 无法将它们应用于选择性操作。这意味着我需要提出另一种机制来有选择地将授权策略应用于特定操作。
操作行为无效,因为ServiceSecurityContext.AuthorizationPolicies
集合是只读的。
将我的服务拆分为两个合同 - 授权和未授权 - 是混乱的,无论如何都无济于事。为了配置单独的行为,我将需要单独的服务(不仅仅是由一个服务实现的单独的合同),因此每个服务都有一个不同的名称用于配置。单独的服务意味着单独的.svc文件指向那些服务,所以我的所有RESTful URL都会改变,除非我有一些疯狂的URI重写方案。这似乎比实现这一目标所需要的工作更多。
我开始认为这样做的唯一合理方法是编写我自己的授权策略来包装昂贵的策略,并且只为select操作调用它。当然,我需要一些方法来识别这些操作,但是当我来到它时我会穿过那座桥。
如何有选择地将授权政策应用于服务运营?有更简单的方法吗?
答案 0 :(得分:1)
由于没有人回复,我会说没有办法这样做,所以我可以标记为已接受。我最终完成了我所说的 - 编写了一个包装器授权策略,根据某些配置有选择地调用昂贵的授权策略。