Разрешить доступ к 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 также поддерживает различные пользовательские механизмы аутентификации как описано здесь.