2010-11-04 5 views
8

J'ai un exe qui s'exécute dans le contexte de l'utilisateur connecté. L'exe utilise WCF pour se faire un serveur de pipe nommé (il sera appelé par plusieurs clients).Autorisations minimales du système d'exploitation requises pour créer un canal nommé (WCF)

L'utilisateur a-t-il besoin d'une autorisation spécifique pour que l'exe puisse créer le canal nommé? J'ai essayé d'exécuter en tant qu'utilisateur avec des autorisations assez minimes (c'est-à-dire dans le groupe Utilisateurs local), et cela fonctionne bien - mais je crains que lorsque je déploie sur le site client, les utilisateurs soient limités d'une manière ou d'une autre. signifie que la création de tuyau nommé ne fonctionne pas.

Répondre

15

Aucune autorisation spéciale n'est requise pour un utilisateur connecté localement pour configurer la fin de service d'un service WCF à l'aide de la liaison netNamedPipe.

Cependant, vous devez vous soucier de savoir si les clients peuvent trouver et se connecter au service. Il y a deux aspects:

  1. Les clients doivent être en cours d'exécution dans un contexte de sécurité qui est pas établie par une connexion réseau (comme l'usurpation d'identité d'un utilisateur distant dans une application Web). Cela est dû au fait que WCF refuse l'accès à toute connexion qui est membre du groupe NETWORK USERS.
  2. Si vous exécutez Vista ou Windows7, le service exe doit être exécuté avec le privilège SeCreateGlobalPrivilege si vous souhaitez que le service soit accessible aux clients qui s'exécutent en dehors de la session de l'utilisateur connecté. Cela est dû au fait que le service WCF doit publier le nom de canal dans un objet de mémoire partagée pour permettre aux clients de le trouver: si la pile de service WCF peut créer cet objet de mémoire partagée dans l'espace de noms global. Mais s'il ne possède pas les privilèges nécessaires, il crée l'objet de mémoire partagée dans l'espace de noms Local (visible uniquement dans la même session d'ouverture de session). Le déploiement du service WCF en tant que service Windows est le seul moyen simple de le faire fonctionner avec ce privilège et donc de le rendre visible aux clients en dehors de sa session.

Plus de détails here si vous êtes intéressé.

+0

Merci @Chris, bonne réponse et informations vraiment utiles à avoir. Donc probablement, tant que client et serveur sont en cours d'exécution dans la session des utilisateurs connectés, il ne devrait y avoir aucun problème d'autorisations? –

+0

@Paul Nearney: C'est vrai. –

+3

Je suis dans une situation similaire mais j'ai deux processus qui s'exécutent sous la même session d'utilisateur mais je ne peux pas me connecter quand c'est un utilisateur non-administrateur sur Windows 7. Je me demande si je dois spécifier quelque chose de spécial pour l'obtenir pour créer l'objet dans l'espace de noms local? – jpierson

Questions connexes