Разрешить доступ к WCF на основе набора групп в web.конфиг
Я создал службу WCF, которая использует проверку подлинности windows, и хотел бы установить ее так, чтобы к ней можно было получить доступ, только если пользователь находится в группе Windows. В настоящее время я использую следующий атрибут в коде, чтобы это произошло
[PrincipalPermission(SecurityAction.Demand, Role = "DomainMyGroup")]
проблема в том, что я должен сделать это для каждого метода и скомпилировать, если я хочу изменить группу. Есть ли способ, чтобы я мог установить группу, которая имеет доступ в файле конфигурации и для служб в целом?
Я пробовал следуя в моем файле конфигурации, но это, похоже, не работает
<security>
<authentication>
<windowsAuthentication authPersistSingleRequest="true" enabled="true"/>
</authentication>
<authorization>
<add accessType="Allow" roles="DomainMyGroup" />
</authorization>
</security>
2 ответов
хорошо, я понял. У меня есть файл конфигурации, установленный следующим образом
<security>
<authentication>
<windowsAuthentication enabled="true" />
</authentication>
<authorization>
<remove users="*" roles="" verbs="" />
<remove users="?" roles="" verbs="" />
<add accessType="Deny" users="?" />
<add accessType="Allow" roles="Domain\MyGroup" />
</authorization>
</security>
также было установлено
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
и в моем классе, который реализует контракт WCF
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Я думаю, это означает, что я использую аутентификацию ASP, а не WCF, но я работаю для меня
на PrincipalPermission
атрибут из функции безопасности доступа к коду .NET и не связан с WCF. Более гибкий способ сделать это, если служба размещена в IIS, показан в этом сообщение MSDN. WCF также поддерживает различные пользовательские механизмы аутентификации как описано здесь.