정의 된 그룹 또는 사용자가 제한하는 Windows 인증을 사용하여 IIS 7에서 호스팅되는 보안 WCF 서비스

StackOverflow https://stackoverflow.com/questions/1166794

문제

정의 된 사용자 / 그룹에만 액세스 할 수 있도록 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 또는 파일 또는 폴더의 파일 시스템에서 권한 (사용자 또는 그룹)을 구성하고 싶습니다.

도움이 되었습니까?

해결책

우선, 인트라넷 환경에 있다면 NetTCPBinding으로 전환 할 수 있고 전환해야합니다. 더 빠르고 유연하며 아무도 외부 (방화벽을 넘어)에서 전화 할 수 없습니다.

다음 - WSHTTPBINDING 및 NETTCPBINDING을 사용하여 Windows 자격 증명이 기본적으로 켜져 있습니다. WCF 세계에서는 일반적으로 파일이나 폴더를 안전하게 보안하지 않습니다. 보안은 서비스 호출입니다. Windows 자격 증명으로 쉽게 수행 할 수 있습니다. 서비스 구현에 PrincipalPermission 속성을 추가하면 다음과 같습니다.

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

잘 작동해야합니다.

실제로 파일과 폴더를 보호 해야하는 경우 언제든지 web.config 파일을 사용하고 Windows 사용자 이름 및 그룹을 기반으로 일반적인 액세스 권한을 지정할 수 있지만 실제로 WCF와 관련이 없습니다.

마크

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top