Использование пользовательского ServiceAuthorizationManager WCF 4.5

Я попытался добавить Custom 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 ответ

Решение

Когда вы используете новый конвейер идентификации в 4.5, вы должны извлечь из ClaimsAuthorizationManager и подключить его, используя элемент конфигурации system.identityModel.

Другие вопросы по тегам