Seguro WCF serviço hospedado no IIS 7 usando a autenticação do Windows restrito por grupo ou usuários definidos

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

Pergunta

Como configurar um serviço WCF hospedado no IIS 7 para permitir o acesso de usuários / grupos só definiu a.

configuração existente:

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

Eu quero depois para Configurar permissões (usuários ou grupos), quer no web.config ou no sistema de arquivos em arquivos ou pastas.

Foi útil?

Solução

Em primeiro lugar, se você estiver em um ambiente de intranet, você pode e deve mudar para netTcpBinding - é mais rápido, é mais flexível, ninguém pode chamar de fora (além de seus firewalls.) - perfeito

Next - você tem as credenciais do Windows ativado por padrão com wsHttpBinding e com netTcpBinding. Em um mundo WCF, você iria arquivos normalmente não seguras ou pastas - o que você segura são chamadas de serviço - e fazê-lo é fácil com as credenciais do Windows - basta adicionar um atributo PrincipalPermission à sua implementação do serviço, e está feito:

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

deve funcionar muito bem.

Se você realmente precisa para arquivos seguros e pastas, você sempre pode usar o arquivo web.config e especificar as permissões de acesso habituais com base em nomes e grupos de usuários do Windows -., Mas que não tem nada a ver com o WCF, realmente

Marc

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top