如何配置IIS 7托管启用仅定义用户/组访问的WCF服务。

现有配置:

<authentication mode="Windows"/> 

<services>     
 <service name="MyService.Test" behaviorConfiguration="MyService.TestBehavior">
  <endpoint address="" binding="wsHttpBinding" contract="MyService.ITest">
   <identity>
    <dns value="localhost"/>
   </identity>
  </endpoint>
  <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
 </service>
</services>
<behaviors>
 <serviceBehaviors>
  <behavior name="MyService.TestBehavior">
   <serviceMetadata httpGetEnabled="true"/>
   <serviceDebug includeExceptionDetailInFaults="true"/>          
  </behavior>        
 </serviceBehaviors>
</behaviors>

我想然后配置权限(用户或组)或者在web.config或上的文件或文件系统文件夹。

有帮助吗?

解决方案

首先,如果您在Intranet环境的时候,你可以和应该切换到NetTcpBinding的 - 它的速度更快,它更灵活,没有人可以从外部调用(超出你的防火墙) - 完美

下一步 - 您有Windows凭据默认开启用的wsHttpBinding与NetTcpBinding的。在WCF的世界里,你通常不会安全的文件或文件夹 - 你会保护什么是服务呼叫 - 而且这样做很容易与Windows凭据 - 只需添加一个属性的PrincipalPermission你的服务实现,就大功告成了:

class MyService : IMyService
{
  [PrincipalPermission(SecurityAction.Demand, Role="SysAdmin")]
  public void SensitiveMethod()
  {
   ....
  }
}

应该只是罚款。

如果你真的需要保护的文件和文件夹,您可以随时使用的web.config文件,并指定了基于Windows的用户名和组通常的访问权限 - 但是,没有任何与WCF,真的

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top