2009-03-19 5 views
0

Nous avons un service utilisant WCF et emprunt d'identité.Les références DLL échouent avec "Accès refusé" lors de l'utilisation de l'emprunt d'identité pour un utilisateur Windows non local-administrateur

Un utilisateur peut se connecter à l'application cliente avec des informations d'identification faisant partie d'un système Active Directory.

La connexion des utilisateurs est du côté service usurpé.

Cela fonctionne correctement lorsque l'utilisateur qui s'est connecté est configuré en tant qu'Administrateur local sur son ordinateur hôte.

Mais un problème se produit lorsqu'ils sont un utilisateur (privilégié) non privilégié. Nous obtenons une exception indiquant Accès refusé "Une de nos DLL". (Cela arrive sur toutes nos DLL)

Répondre

0

Il s'agissait en fait d'un simple problème d'autorisations sur l'environnement de déploiement.

En utilisant le Code Access Security Policy Tool (Caspol.exe), il s'agissait juste d'appliquer les permissions correctes. Il y a un guide d'utilisation sur msdn.

La chaîne de ligne de commande réelle était

Caspol.exe de 1 -Forte -file D: \ deployment_location \ WcfServiceHost.exe -noname -noversion FullTrust

Ceci a été réalisé sur un ensemble de services. Puisque nos numéros de version changeaient fréquemment en utilisant le 'noversion' était utile, le service nécessitait également FullTrust dans notre environnement.

Pour réutiliser le correctif pour diverses machines, créer un script PowerShell (ou fichier batch) et en utilisant le paramètre « polchgprompt » pour désactiver les invites afin que le script peut exécuter sans intervention. Polchgprompt - "Active ou désactive l'invite qui s'affiche à chaque exécution de Caspol.exe à l'aide d'une option qui entraînerait des modifications de stratégie."

Structure Script:

CasPol.exe -polchgprompt off 

--all the individual service calls-- 
CasPol.exe -addgroup 1 -strong -file D:\deployment_location\WcfServiceHost.exe -noname -noversion FullTrust 
... 

CasPol.exe -polchgprompt on