19 votes

Puis-je désactiver l'usurpation d'identité dans quelques cas seulement ?

J'ai une application qui utilise l'usurpation d'identité partout. Mais lorsqu'un utilisateur est connecté en tant qu'administrateur, certaines opérations nécessitent qu'il écrive sur le serveur lui-même. Or, si ces utilisateurs n'ont pas de droits sur le serveur lui-même (certains n'en ont pas), ils ne peuvent pas écrire.

Ce que je veux faire, c'est désactiver l'usurpation d'identité pour quelques commandes seulement.

Y a-t-il un moyen de faire quelque chose comme ça ?

using(HostingEnvironment.Impersonate.Off())
  //I know this isn't a command, but you get the idea?

Merci.

24voto

Maxime Rouiller Points 5987

Assurez-vous que le pool d'applications dispose des droits appropriés dont vous avez besoin.

Ensuite, lorsque vous voulez revenir à l'identité du pool d'applications... exécutez ce qui suit :

private WindowsImpersonationContext context = null;
public void RevertToAppPool()
{
    try
    {
        if (!WindowsIdentity.GetCurrent().IsSystem)
        {
            context = WindowsIdentity.Impersonate(System.IntPtr.Zero);
        }
    }
    catch { }
}
public void UndoImpersonation()
{
    try
    {
        if (context != null)
        {
            context.Undo();
        }
    }
    catch { }
}

2voto

jedatu Points 1331

Je ne sais pas si c'est l'approche préférée, mais quand j'ai voulu faire cela, j'ai créé une instance d'un fichier de type WindowsIdentity et a appelé le Usurper l'identité de méthode. Cela permet au code suivant de se faire passer pour un autre utilisateur de Windows. Elle renvoie un WindowsImpersonationContext qui a un Annuler qui rétablit le contexte de l'usurpation d'identité.

0voto

Guvante Points 10338

Vous pouvez désactiver l'authentification pour la page, puis usurper manuellement l'identité de l'utilisateur authentifié dans le reste de votre code.

http://support.microsoft.com/kb/306158

Il y a une référence à cette dernière partie, mais en gros, vous personnifiez l'identité de l'utilisateur.

Cela signifie que vous devrez vous faire passer pour un autre utilisateur au début de tout appel à la page, le désactiver lorsque vous en avez besoin, puis le réactiver lorsque vous avez terminé, mais cela devrait être une solution viable.

0voto

naspinski Points 9810

J'ai juste fini par donner les droits d'écriture aux dossiers aux "utilisateurs authentifiés".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X