DMI's Blog sur les technos .NET(dotnet) et J2EE

Empreint d'identité avec C#.NET

Il faut savoir que c'est la galére si vous voulez accéder à des fichiers ou ressources du poste local à partir d'une page aspx car par défaut tous les utilisateurs de la page sont représentés parl’utilisateur ASPNET (qui a des droits réduits).
Plusieurs solutions existent et la plus courante consiste à faire de l’ »empreint d’identité » à partir du fichier web.config ou à la volée.
La prémiére donne ceci:
Ajouter dans votre fichier web.config ceci:
<identity impersonate="true" userName="MonDomaine\MonLogin" password="MonMotDePasse" />

La seconde donne ceci:

1. Déclarez la methode extern de l'api "advapi32" comme ceci:

[System.Runtime.InteropServices.DllImport("advapi32.dll")]
public static extern bool LogonUser(
String strUsername,
String strDomain,
String strPassword,
int intLogonType,
int intLogonProvider,
out IntPtr phToken);



2. puis ...

System.IntPtr phToken = IntPtr.Zero;
LogonUser("votre login", "votre domaine(nom de la machine sur le réseau)", "votre mot de passe", 3, 0, out phToken);
WindowsIdentity ImpersonatedIdentity = new WindowsIdentity(phToken);
WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate();

//traitements .....

//Fin empreint d'identité
MyImpersonation.Undo();


ou bien, si vous voulez empreinter l'identité de l'utilisateur connecté, alors ceci conviendra le mieux:
WindowsIdentity ImpersonatedIdentity = System.Security.Principal.WindowsIdentity.GetCurrent();
WindowsImpersonationContext MyImpersonation = ImpersonatedIdentity.Impersonate();

//traitements .....

//Fin empreint d'identité
MyImpersonation.Undo();

Vos commentaires

Aucun commentaire pour le moment.

Autres publications sur le sujet

Aucune référence pour le moment.

Cet article ne peut faire référence à d'autres publications.

Commenter cet article

Cet article ne peut être commenté.