Accueil > > > 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
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
Sources de la même categorie
Commentaires et avis
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é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é car je ne comprends pas bien ce qu'il se passe: J'ai un formulaire a
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Forum
SCRIPTSCRIPT par nadialadypower
Cliquez pour lire la suite par nadialadypower
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|