Sicuro servizio WCF ospitato in IIS 7 utilizzando l'autenticazione di Windows ristretta per gruppo o utenti definiti

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

Domanda

Come configurare un servizio WCF ospitato in IIS 7 per consentire l'accesso per gli utenti solo definiti / gruppi a.

configurazione esistente:

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

Voglio quindi configurare i permessi (utenti o gruppi) sia nel web.config o nel file system su file o cartelle.

È stato utile?

Soluzione

Prima di tutto, se siete in un ambiente Intranet, si potrebbe e dovrebbe passare a netTcpBinding - è più veloce, è più flessibile, nessuno può chiamare dall'esterno (al di là dei firewall) -. Perfetto

Avanti - si dispone di credenziali di Windows attivata di default con wsHttpBinding e con netTcpBinding. In un mondo WCF, si dovrebbe file o cartelle in genere non sicuri - quello che ci sicuri sono chiamate di servizio - e così facendo è facile con le credenziali di Windows - basta aggiungere un attributo PrincipalPermission per l'implementazione del servizio, e il gioco è fatto:

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

dovrebbe funzionare bene.

Se si ha realmente bisogno per proteggere i file e cartelle, si può sempre utilizzare il file web.config e specificare le autorizzazioni di accesso abituali in base ai nomi utente di Windows e gruppi - ma che non ha nulla a che fare con WCF, davvero

Marc

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top