在WCF REST端点上使用C#属性进行身份验证/授权

时间:2017-06-22 13:28:20

标签: c# wcf

对于我的休息服务上的特定端点,我需要检查一个令牌,而不是在每个端点中执行此操作:

IncomingWebRequestContext woc = WebOperationContext.Current.IncomingRequest;    
string tok = woc.Headers["tok"];
// validate etc

我想在端点的方法上添加一个属性,并执行以下操作:

[Restricted]
public Blog Get(string id)

并使端点返回自定义响应,我可以获得标题和控制方法返回值吗?

1 个答案:

答案 0 :(得分:3)

有两种方法可以做到这一点:

  • 您可以使用等外部工具来实施aspect oriented programming。这意味着您的属性(现在使用标准.NET的普通元数据)成为一个Aspect并执行代码。这是通过编译IL代码的后编译器实现的。很酷的东西,但它需要花钱。

  • 您将自己的IEndpointBehavior写入apply a dispatch behavior到服务端点,然后又会添加IDispatchMessageInspector来检查邮件(例如标题)并执行操作相应地,所有消息到您的端点。它还可以检查您的端点操作,是否具有此类属性集,并仅对拥有该操作的操作进行操作。