1
我有一个在IIS中托管的WCF服务。我想使用我自己的IAuthorizationPolicy,并在服务器上的web.config文件中配置它。我有我的身份验证策略:如何在WCF中声明性地实现自定义IAuthorizationPolicy?
namespace MyLib.WCF
{
public class CustomAuthorizationPolicy : IAuthorizationPolicy
{
public CustomAuthorizationPolicy()
{
this.Id = Guid.NewGuid().ToString();
}
public bool Evaluate(EvaluationContext evaluationContext, ref object state)
{
throw new ApplicationException("Testing custom auth");
}
...
}
}
而且在我的web.config:
<service behaviorConfiguration="Behavior" name="MyService">
<endpoint address="" binding="wsHttpBinding" contract="IMyService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<serviceBehaviors>
<behavior name="Behavior">
<serviceAuthorization principalPermissionMode="Custom">
<authorizationPolicies>
<add policyType="MyLib.WCF.CustomAuthorizationPolicy, MyLib.WCF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</authorizationPolicies>
</serviceAuthorization>
</behavior>
</serviceBehaviors>
但我CustomAuthorizationPolicy.Evaluate()方法永远不会触发。我错过了什么?
伟大的问题,它通常是明显的事情,让我!我已经将我的服务配置添加到上面的代码片段中,但要回答您的问题:1)是的,我引用了我的behaviorConfiguration,2)我使用了wsHttpBinding,但没有安全模式设置 - 也许默认值到无? – MrDustpan 2009-08-24 16:13:20
不,实际上,wsHttp绑定使用Windows凭据默认使用基于消息的安全性。这不应该是问题.... – 2009-08-24 16:58:58