Service de sécurité WCF hébergé dans IIS 7 en utilisant l'authentification Windows restreint par groupe défini ou utilisateurs

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

Question

Comment configurer un service WCF hébergé dans IIS 7 pour permettre l'accès des utilisateurs / groupes uniquement définis à.

configuration existante:

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

Je veux ensuite configurer les permissions (utilisateurs ou groupes) soit dans le web.config ou dans le système de fichiers sur les fichiers ou dossiers.

Était-ce utile?

La solution

Tout d'abord, si vous êtes dans un environnement intranet, vous pouvez et vous devez passer à netTcpBinding - il est plus rapide, il est plus flexible, personne ne peut appeler de l'extérieur (au-delà de votre pare-feu) -. Parfait

Ensuite - vous avez des informations d'identification de Windows activés par défaut avec wsHttpBinding et netTcpBinding. Dans un monde de WCF, vous ne sont généralement pas des fichiers ou des dossiers sécurisés - ce que vous en toute sécurité sont les appels de service - et le faire est facile avec les informations d'identification de Windows - il suffit d'ajouter un attribut PrincipalPermission à votre implémentation de service, et vous avez terminé:

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

devrait fonctionner très bien.

Si vous avez vraiment besoin de sécuriser les fichiers et les dossiers, vous pouvez toujours utiliser le fichier web.config et spécifiez les autorisations d'accès habituelles basées sur les noms d'utilisateur et les groupes Windows - mais cela n'a rien à voir avec WCF, vraiment

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top