Puis-je désactiver l'emprunt d'identité seulement dans quelques cas
-
02-07-2019 - |
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.
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"
.