Разрешить доступ к WCF на основе группы, установленной в web.config - PullRequest
6 голосов
/ 21 ноября 2011

Я создал службу WCF, которая использует проверку подлинности Windows, и хотел бы установить ее так, чтобы к ней можно было получить доступ, только если пользователь находится в группе Windows. В настоящее время я использую следующий атрибут в коде, чтобы это произошло

[PrincipalPermission(SecurityAction.Demand, Role = "Domain\MyGroup")]

Проблема в том, что я должен делать это для каждого метода и компилировать, если я хочу изменить группу. Есть ли способ, чтобы я мог установить группу, которая имеет доступ в файле конфигурации и для служб в целом?

Я попробовал следующее в моем конфигурационном файле, но это не работает

<security>
   <authentication>
      <windowsAuthentication authPersistSingleRequest="true" enabled="true"/>
   </authentication>
   <authorization>
      <add accessType="Allow" roles="Domain\MyGroup" /> 
   </authorization>
</security>

Ответы [ 2 ]

2 голосов
/ 22 ноября 2011

Хорошо, я понял это.У меня есть файл конфигурации, подобный следующему

<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)]

Iдумаю, это означает, что я использую аутентификацию ASP, а не WCF, но я работаю для меня

0 голосов
/ 21 ноября 2011

Атрибут PrincipalPermission относится к функциям защиты доступа к коду .NET и не связан с WCF. Более гибкий способ сделать это, если служба размещается в IIS, показан в этом сообщении MSDN. WCF также поддерживает различные настраиваемые механизмы аутентификации , как описано здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...