정의 된 그룹 또는 사용자가 제한하는 Windows 인증을 사용하여 IIS 7에서 호스팅되는 보안 WCF 서비스
-
19-09-2019 - |
문제
정의 된 사용자 / 그룹에만 액세스 할 수 있도록 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와 관련이 없습니다.
마크
제휴하지 않습니다 StackOverflow