Question

J'ai une application qui utilise l'emprunt d'identité. Toutefois, lorsqu'un utilisateur est connecté en tant qu'administrateur, quelques opérations nécessitent qu'il écrive sur le serveur lui-même. Maintenant, si ces utilisateurs n'ont pas de droits sur le serveur actuel (certains n'ont pas), cela ne les laissera pas écrire.

Ce que je veux faire, c'est désactiver l'emprunt 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.

Était-ce utile?

La solution

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

Ensuite, lorsque vous souhaitez revenir à l'identité du pool d'applications, exécutez la procédure suivante:

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 { }
}

Autres conseils

Je ne suis pas sûr que ce soit l'approche préférée, mais lorsque je voulais le faire, je créais une instance d'un WindowsIdentity et appelé le Méthode d'emprunt d'identité . Cela permet au code ultérieur d'emprunter l'identité d'un autre utilisateur Windows. Il retourne un WindowsImpersonationContext qui possède un < a href = "http://msdn.microsoft.com/en-us/library/system.security.principal.windowsimpersonationcontext.undo.aspx" rel = "nofollow noreferrer"> Annuler , méthode qui annule le contexte de l'emprunt d'identité retour à nouveau.

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

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

Cela fait référence à cette dernière partie, mais vous incarnez en principe une usurpation d'identité User.Identity

Cela signifie que vous devrez emprunter l'identité de l'utilisateur au début de tout appel sur la page, désactivez-la lorsque vous en avez besoin, puis réactivez-la lorsque vous avez terminé, mais cela devrait être une solution viable.

Je viens juste de donner aux dossiers les autorisations d'écriture sur les "utilisateurs authentifiés"

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top