2010-03-10 7 views
3

Nous essayons d'exécuter un ensemble de tâches administratives sur le serveur via une console d'administration Web. La console s'exécute avec l'usurpation d'identité en tant qu'utilisateur actuellement connecté, et seuls les administrateurs de la machine locale sont autorisés à se connecter. Pour l'instant, cela fonctionne dans la plupart des cas, mais nous rencontrons des problèmes lors de l'utilisation d'UAC.Octroi temporaire de privilèges administrateur élevés au code ASP.NET

Le premier problème est un bloqueur: il semble que les administrateurs n'obtiennent pas le rôle "BUILTIN \ Administrators" même s'ils sont administrateurs dans la zone locale. Cela peut les empêcher même d'entrer dans la console d'administration, puisque nous utilisons la notation web.config <allow roles="BUILTIN\Administrators"> pour spécifier la sécurité. Je soupçonne que les seules solutions ici sont soit d'exécuter l'application ASP.NET en tant que système, soit d'autoriser plus d'utilisateurs et de faire une vérification plus granulaire du code. D'autres idées? Est-il possible d'injecter une demande d'élévation dans la vérification intégrée des autorisations ASP.NET?

L'autre problème est que nous voulons exécuter certaines commandes nécessitant un accès administrateur. L'utilisateur visitant le site est un administrateur, et est correctement usurpé, mais lorsque nous générons un processus, il échoue en raison du manque de privilèges d'administrateur. La réponse claire est d'élever pendant la durée de cette commande. Il y a des solutions qui me permettront d'élever temporairement en usurpant l'identité d'un nom d'utilisateur et mot de passe, mais je préfère ne pas avoir à demander à l'utilisateur déjà validé son mot de passe. Y a-t-il des astuces pour élever l'utilisateur actuel?

(Je peux comprendre pourquoi l'équipe ASP.NET pourrait essayer de rendre cela plus difficile, de sorte que les pages web ne puissent pas prendre l'avantage invisible d'un administrateur visitant le site web ... mais sûrement il doit y avoir un moyen de pro grammaticalement déclarer que votre code a besoin de droits d'administrateur intégral d'avertissement de façon appropriée l'administrateur IIS de ses intentions)

Il y a une série de réponses pour Windows Forms applications, telles que: How to elevate privileges only when required? et File.Exists returning false from a network share mais j'espère en trouver un qui fonctionnera avec ASP.NET ...

Merci Steve

+0

J'ai aussi ce problème. Avez-vous déjà trouvé une réponse? –

+0

Vous cherchez aussi une réponse à cela. – roryf

+0

Avez-vous déjà utilisé l'une des ressources que j'ai fournies dans ma réponse? Ou avez-vous pris un autre itinéraire? – Peter

Répondre

1

Nous avons réussi à obtenir un niveau d'emprunt d'identité "supérieur" de la part de l'utilisateur qui accède actuellement au site Web en activant le serveur pour la délégation dans Active Directory. Par Microsoft, You can think of delegation as a more powerful form of impersonation, as it enables impersonation across a network. Vous pouvez ne pas avoir besoin de traverser le réseau, mais cela peut résoudre vos problèmes de sécurité.

Voici quelques ressources sur la configuration de la délégation, nous espérons que cela vous aidera.

Questions connexes