web-dev-qa-db-fra.com

Exécuter le code en tant qu'utilisateur différent

Existe-t-il un moyen de dire à mon code de fonctionner en tant qu'utilisateur différent?

J'appelle NetUserSetInfo via un PInvoke et je dois l'appeler en tant qu'utilisateur différent. Y-a-t-il un moyen de faire ça?

33
Vaccano

L'emprunt d'identité nécessite l'appel de certaines API natives (à savoir LogonUser), il n'est donc probablement pas intéressant de publier 3 pages de code wrapper. Cette page contient un exemple de travail complet: http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/

Notez que l'emprunt d'identité comporte des considérations de sécurité importantes. Assurez-vous de suivre les meilleures pratiques.

27
Richard Berg

Probablement le meilleur et le plus propre code que j’ai vu jusqu’à présent est-ce

using (Impersonation.LogonUser(domain, username, password, logonType))
{
    // do whatever you want as this user.
}

Il suffit de suivre Github ou Nuget .

25
Milan Matějka

Cet article l'explique assez succinctement: 

Voici un extrait de code de l'article:

IntPtr accessToken = IntPtr.Zero;
....
//You have to initialize your accessToken with API calling 
....
WindowsIdentity identity = new WindowsIdentity(accessToken);
WindowsImpersonationContext context = identity.Impersonate();
...
// Now your code is using the new WindowsLogin and you can do what ever this login can do
...

//Now you can return to your current login of Windows
context.Undo();
11
JohnFx

Oui L'emprunt d'identité aide à exécuter du code en tant qu'utilisateur différent. Cela fonctionne bien dans mon cas… .. (merci à Milan Matějka)

J'ai aussi trouvé un lien Ref. J'espère que cela vous aidera à obtenir facilement le paquet chez nuget: http://iamfixed.blogspot.de/2017/11/run-code-as-different-user-in-c-from.html

0