使用自定义ServiceAuthorizationManager WCF 4.5

时间:2014-07-16 09:15:44

标签: c# .net wcf wif

我尝试使用以下配置将自定义ServiceAuthorizationManager添加到我的WCF服务(.Net 4.5)

配置

<serviceBehaviors>
<behavior name="ServiceBehavior">    
<serviceAuthorization principalPermissionMode="Always" serviceAuthorizationManagerType="TestWCFService.CustomAuthorizationManager TestWCFService" />
</behavior>
</serviceBehaviors>

收到错误,如下所示

[InvalidOperationException: ID4039: A custom ServiceAuthorizationManager has been configured. Any custom ServiceAuthorizationManager must be derived from IdentityModelServiceAuthorizationManager.]
   System.ServiceModel.Description.ServiceCredentials.ConfigureServiceHost(ServiceHostBase serviceHost) +7934958
   System.ServiceModel.Description.DispatcherBuilder.ValidateDescription(ServiceDescription description, ServiceHostBase serviceHost) +381
   System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost) +306
   System.ServiceModel.ServiceHostBase.InitializeRuntime() +90
   System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout) +175
   System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) +740
   System.ServiceModel.HostingManager.ActivateService(ServiceActivationInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +125
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String normalizedVirtualPath, EventTraceActivity eventTraceActivity) +901*

IdentityModelServiceAuthorizationManager是位于System.ServiceModel.Security.IdentityModelServiceAuthorizationManager中的内部类

https://connect.microsoft.com/VisualStudio/feedback/details/781704/unable-to-use-a-custom-serviceauthorizationmanager

4.5不支持吗?有没有其他方法可以实现同样的目标?

1 个答案:

答案 0 :(得分:1)

在4.5中使用新的标识管道时,必须从ClaimsAuthorizationManager派生并使用system.identityModel配置元素将其连接起来。