begin process at 2012 02 05 00:45:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > IMPERSONATION : EXECUTER UN BOUT DE CODE AVEC LES DROITS D'UN AUTRE UTILISATEUR

IMPERSONATION : EXECUTER UN BOUT DE CODE AVEC LES DROITS D'UN AUTRE UTILISATEUR


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :impersonation, utilisateur, logon, executer, code Niveau :Initié Date de création :31/05/2006 Date de mise à jour :05/06/2006 20:41:27 Vu :20 988

Auteur : poppyto

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note


 Description

Mise en pratique :
J'ai un gros problème, je voudrais par l'intermédiaire d'une page web créer une tâche planifiée. J'aimerai bine que le compte ASP.net ait les droit d'accès au répertoire C:\WINDOWS\Tasks\ mais apparemment ça ne semble pas jouable pour ce répertoire.

La solution ? Utiliser l'impersonation d'asp.net, c'est à dire qu'une portion de code va être executée sous une autre identité.
Pour cela il va par contre falloir passer par une API mais rien de grâve dans l'ensemble !

Note : Bien  entendu, il vous faudra le LOGIN + MOT DE PASSE + DOMAINE de l'utilisateur sus-nommé ^^


Source

  • [DllImport("advapi32.dll", SetLastError=true)]
  • public extern static bool LogonUser(String lpszUsername, String
  • lpszDomain,
  • String lpszPassword, int dwLogonType,
  • int dwLogonProvider, ref IntPtr phToken);
  • public void Impersonate()
  • {
  • const int LOGON32_LOGON_INTERACTIVE = 2;
  • const int LOGON32_LOGON_NETWORK = 3;
  • const int LOGON32_PROVIDER_DEFAULT = 0;
  • const int LOGON32_PROVIDER_WINNT35 = 1;
  • const int LOGON32_PROVIDER_WINNT40 = 2;
  • const int LOGON32_PROVIDER_WINNT50 = 3;
  • IntPtr UserToken = new IntPtr(0);
  • bool loggedOn;
  • try
  • {
  • //tente de logger l'utilisateur
  • loggedOn = LogonUser(
  • "LOGIN",
  • "DOMAINE",//Dns.GetHostName(),
  • MOT DE PASSE",
  • LOGON32_LOGON_NETWORK,
  • LOGON32_PROVIDER_DEFAULT,
  • ref UserToken);
  • }
  • catch(Exception ex)
  • {
  • throw ex;
  • }
  • if(loggedOn) //logging ok ?
  • {
  • //renvoi identité ASP_NET
  • WindowsIdentity ident_here1 = WindowsIdentity.GetCurrent();
  • WindowsIdentity SystemMonitorUser = new WindowsIdentity(UserToken);
  • //Changement d'utilisateur ici
  • WindowsImpersonationContext ImpersonatedUser =SystemMonitorUser.Impersonate();
  • //ridentité nouvel User
  • WindowsIdentity ident_here2 = WindowsIdentity.GetCurrent();
  • /************************************************
  • *
  • *
  • * EXECUTER LE CODE ICI
  • *
  • *
  • ************************************************/
  • ImpersonatedUser.Undo();
  • }
  • }
[DllImport("advapi32.dll", SetLastError=true)]
public extern static bool LogonUser(String lpszUsername, String
lpszDomain,
String lpszPassword, int dwLogonType,
int dwLogonProvider, ref IntPtr phToken);



public void Impersonate()
{

	const int LOGON32_LOGON_INTERACTIVE = 2;
	const int LOGON32_LOGON_NETWORK = 3;
	
	const int LOGON32_PROVIDER_DEFAULT = 0;
	const int LOGON32_PROVIDER_WINNT35 = 1;
	const int LOGON32_PROVIDER_WINNT40 = 2;	
	const int LOGON32_PROVIDER_WINNT50 = 3;
	


	  IntPtr UserToken = new IntPtr(0);
	  bool loggedOn;

	  try
	  {
	  	//tente de logger l'utilisateur
		loggedOn = LogonUser(
		     "LOGIN",
		     "DOMAINE",//Dns.GetHostName(),
		      MOT DE PASSE",
		      LOGON32_LOGON_NETWORK,
		      LOGON32_PROVIDER_DEFAULT, 
		      ref UserToken);
	  }
	  catch(Exception ex)
	  {
		throw ex;
	  }

	  if(loggedOn) //logging ok ?
	  {
	  	//renvoi identité ASP_NET
		WindowsIdentity ident_here1 = WindowsIdentity.GetCurrent();
		
		
		WindowsIdentity SystemMonitorUser = new WindowsIdentity(UserToken);
		
		//Changement d'utilisateur ici
		WindowsImpersonationContext ImpersonatedUser =SystemMonitorUser.Impersonate();


		//ridentité nouvel User
		WindowsIdentity ident_here2 = WindowsIdentity.GetCurrent();


		/************************************************
		*
		*
		*		EXECUTER LE CODE ICI
		*
		*
		************************************************/
		

		ImpersonatedUser.Undo();
	  }
}

 Conclusion

N'oubliez pas le "using System.Runtime.InteropServices;"


 Historique

05 juin 2006 20:41:27 :
J'avais oublier le P/Invoke de LogonUser;

 Sources du même auteur

Source .NET (Dotnet) VARIABLES GET,POST,SERVER COMME EN PHP
Source .NET (Dotnet) ENCRYPTER UNE CHAINE AVEC MD5
Source .NET (Dotnet) MASQUER LA VERSION D'ASP.NET DANS LE HEADER HTTP SANS FILTRE...
Source avec une capture Source .NET (Dotnet) COMPACTEZ VOS CSS

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) [VB 8][.NET 2][ATLAS]EXPLORATEUR (WINDOWS LIKE) DE FICHIER S... par FREMYCOMPANY
Source avec Zip Source .NET (Dotnet) DATAGRID AVEC RECHERCHE ALPHABÉTIQUE par gatita_dev
EXECUTION DE CODES ASP À LA VOLÉE par apxa
Source avec Zip Source avec une capture Source .NET (Dotnet) IMAGE ANTI-BOT ET VALIDATION DE FORMULAIRES par badrbadr
Source avec Zip Source .NET (Dotnet) DÉCLENCHEMENT D'ÉVÉNEMENT DANS UN CONTROL UTILISATEUR ET REM... par Thanos_the_yopper

Commentaires et avis

Commentaire de scortex84 le 27/07/2006 10:30:20

Salut, et bravo pour ton code.

Par contre, il me semble qu'il est nécessaire que l'utilisateur soit administrateur du serveur pour que cela fonctionne. Ou est-il possible de lui attribuer un autre groupe ?

Merci,

Seb.

Commentaire de poppyto le 27/07/2006 11:05:40 administrateur CS

Je ne vois pas pourquoi il faudrait être Admin ? Le but de l'opération est justement de pouvoir obtenir d'autres droits dont ceux d'Admin pourquoi pas ?

Commentaire de scortex84 le 27/07/2006 17:20:32

en fait, j'ai posté mon problème ici :
http://www.aspfr.com/infomsg_IMPERSONATION-ADVAPI32-DLL_786503.aspx

Si tu as une idée...
seb.

Commentaire de prac le 23/04/2007 10:41:44

Bonjour,

j'ai mis en place l'impersonation en asp, tout marche corectement pour le téléchargement de fichiers(images ou autre), mais lorsque je veux afficher une image directement sur la page web avec un simple <img src=""> ça ne fonctionne plus et il me demande de m'identifier et donc n'affiche pas l'image.
Sachant que lorsque je change les autorisation sur le fichier ça fonctionne et donc pas l'impersonation.

Si quelqu'un à une idée merçi de m'en faire part.

Cordialement.

Commentaire de poppyto le 23/04/2007 11:24:05 administrateur CS

Est-ce que le filtre isapi d'asp.net 2.0 est aussi utilisé pour les images dans IIS ?

Commentaire de prac le 23/04/2007 15:36:12

Je ne crois pas, mais je code en asp (pas en dotnet), donc je crois que je ne suis pas concerné.?non?

Commentaire de poppyto le 23/04/2007 17:46:08 administrateur CS

Désolé, c'est pas mon dada l'asp ^^

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

code utilisateur xp [ par batou ] comment connaitre le code secret d'un utilisateursous xp? Script de logon pour partager un dossier [ par Nymouas ] Bonjour, Je voudrais faire un script qui permet de partager le dossier de l'utilisateur en train de se logger (qui s'ex&#233;cute une fois lors de l Executer du code après l'affichage [ par Seren ] Bonjour les gens! Je chercher a savoir comment je peux executer du code après avoir envoyer le HTML au client. Je m'explique.Pour afficher plus rapide HttpModule et session [ par Oho2 ] Bonjour,Je suis en train de concevoir une appli intranet qui necéssite une authentification et l'utilisation de session. Une fois l'utilisateur connec authentification [ par koukitasaid ] Bonjour, J'ai un formulaire de saisie que l'utilisateur doit remplir ,ces informations seront Ajouter sur les tables selon les champs de chacune, apre Problème Authentification forms [ par Mayzz ] Bonjour à tous ! Voila je reviens avec un petit problème d'application asp.net. J'ai donc un site avec une gestion des utilisateur classique utilisa impersonation [ par pwalinett ] bonjour, j'ai un problème, j'utilise l'impersonation pour imprimer une page, seulement je voudrais que seul un utilisateur puisse avori accès a cette Nom de champs dynamiques [ par demicervo ] Bonjour, J'ai créer un formulaire. Ce formulaire est basé sur des tableaux qui se construise grâce à une base de donnée. Un utilisateur renseigne dan code de variable [ par metos ] Le problème c'est qu'avec cette manière un utilisateur peut voir le mot de passe en affichant la source. Est-il possible de coder le password ou d'emp Empecher une procedure de s'executer plusieurs fois [ par blooh ] Bonjour, Voila j'ai un probleme qui me parait simple... mais je reste bloqu&#233; car je ne comprends pas bien ce qu'il se passe: J'ai un formulaire a


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,420 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales