Использование пользовательского 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.
Разве это не поддерживается в 4.5? Есть ли альтернативный способ достижения того же?
1 ответ
Решение
Когда вы используете новый конвейер идентификации в 4.5, вы должны извлечь из ClaimsAuthorizationManager и подключить его, используя элемент конфигурации system.identityModel.