允许基于web.config中设置的组访问WCF

Joh*_*ohn 6 authentication iis wcf web-config

我创建了一个使用Windows身份验证的WCF服务,并希望将其设置为只有在用户位于Windows组中时才能访问它.我目前在代码中使用以下属性来实现这一点

[PrincipalPermission(SecurityAction.Demand, Role = "Domain\MyGroup")]
Run Code Online (Sandbox Code Playgroud)

问题是我必须在每个方法上执行此操作并编译,如果我想更改组.有没有办法让我可以在配置文件和整个服务中设置有权访问的组?

我在配置文件中尝试了以下内容,但这似乎不起作用

<security>
   <authentication>
      <windowsAuthentication authPersistSingleRequest="true" enabled="true"/>
   </authentication>
   <authorization>
      <add accessType="Allow" roles="Domain\MyGroup" /> 
   </authorization>
</security>
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 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>
Run Code Online (Sandbox Code Playgroud)

还得设置

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
Run Code Online (Sandbox Code Playgroud)

在我的实现 WCF 合约的类上

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Run Code Online (Sandbox Code Playgroud)

我想这意味着我使用 ASP 身份验证而不是 WCF,但我为我工作