2009-03-04 12 views
4

Je travaille pour une entreprise qui produit un produit commercial et nous essayons actuellement de fournir une solution qui permettra à certains de nos plus gros clients de distribuer le côté client de notre application via ClickOnce.ClickOnce and Security

L'intention est que nos clients déploient l'installation ClickOnce sur un partage réseau, puis envoient un lien vers le manifeste d'application aux clients par courrier électronique ou par d'autres moyens.

Nous avons réussi à intégrer la production de l'installation ClickOnce dans notre build automatisé (en utilisant les outils de ligne de commande Mage), et nous pouvons ensuite exécuter avec succès l'installation réelle sur une machine client. Cependant, après l'installation et le lancement, notre application lance une exception SecurityException à l'exécution, car l'accès à FileIOPermission lui est refusé. Notre application nécessite des autorisations FullTrust, mais il semble que si l'emplacement CodeBase de l'assembly en cours d'exécution est un partage réseau, seules les autorisations LocalIntranet (qui n'incluent pas FileIOPermission) vous sont accordées.

Il y a un article ici qui indique apparemment que cela est tout à fait un problème commun: http://blogs.msdn.com/shawnfa/archive/2004/12/30/344554.aspx

Une solution est fournie dans cet article à l'aide de l'outil Caspol, mais nous aurions à exécuter sur chaque ordinateur client dans l'environnement de déploiement. Ce n'est pas vraiment un problème en soi, c'est plus le fait que vous avez besoin des droits d'administrateur sur l'ordinateur client pour effectuer ce qui est fait avec l'outil CasPol, et la majorité des clients dans l'environnement de nos clients n'auront pas ces privilèges.

Un article a également été publié sur le même blog qui semble impliquer que la nécessité d'exécuter le correctif Caspol a été atténué avec la sortie de .NET 3.5 SP1: http://blogs.msdn.com/shawnfa/archive/2008/05/12/fulltrust-on-the-localintranet.aspx

Cependant, j'ai modifié notre application pour cibler spécifiquement la version SP1 de l'infrastructure, comme détaillé dans cet article: http://msdn.microsoft.com/en-us/library/bb398202.aspx#

Après cela, nous avons toujours rencontré la même SecurityException. J'ai donc appliqué certains paramètres SP1 ClickOnce spécifiques comme détaillé dans l'article, mais toujours pas de joie. Si je lance l'application directement à partir du partage du réseau de publication, je reçois les autorisations, il semble que ce soit uniquement dans le contexte de ClickOnce que nous leur sommes refusés.

Quelqu'un d'autre a rencontré des problèmes similaires à ceux-ci? J'aurais pensé que s'il y avait un problème dans la version SP1 du framework en ce qui concerne ces permissions, quelqu'un d'autre l'aurait remarqué avant que nous n'ayons pas encore envoyé une solution ClickOnce pour le moment.

Répondre

3

Je pense que j'ai rencontré un problème similaire sur .NET 4.0 avec des exceptions de sécurité pendant le déjeuner. La solution que j'ai trouvée consistait à signer numériquement le manifeste avec un certificat approuvé (pas le studio visuel par défaut généré pour votre projet).

Il s'agit d'un "bug" connu (ou de conception) sur les manifestes déployés ClickOnce.

Votre projet est-il signé?