Impersonation

01/07/2005 - 15:00 por Roth | Informe spam
Hola, alguno aplicó impersonation alguna vez ? , el cliente me pide el
SystemID , se lo tendría que dar el administrador del IIS verdad?

Gracias !.-

Preguntas similare

Leer las respuestas

#6 Miguel Angel Campos
26/07/2005 - 08:52 | Informe spam
Espero que este link te sirva, es un poco avanzado al utilizar PInvoke y
ciertas funciones de seguridad del sistema operativo, pero está más o menos
claro.

http://www.codeproject.com/csharp/lsadotnet.asp

Un Saludo,

Miguel Angel Campos
MCAD.NET

"Manuel Conde" escribió en el
mensaje news:
Hola a todos,
Todavía soy novato en lo de impersonation (lo conocí ayer) y por lo que he
leido parece que me sirve para la aplicación que estoy haciendo en mi
trabajo.
Tengo una aplicación que se ejecuta en los pc's de los usuarios, y en un
determinado momento, la aplicación ha de acceder a un directorio para el
cual
sólo un usuario privilegiado tiene acceso.
Mi pregunta es: Si yo conozo el login y la password de ese usuario,
¿podría
en un determinado momento mi aplicación actuar como ese usuario
privilegiado,
acceder a dicho directorio, y luego seguir ejecutandose con los permisos
del
usuario normal?
Si alguien tiene algunas líneas de código, se agradecerán...
Muchas gracias a todos.
Un Saludo,
Manuel
Respuesta Responder a este mensaje
#7 Manuel Conde
26/07/2005 - 10:18 | Informe spam
He encontrado la solución a mi problema. Gracias... Ahí va el código para
quien le pueda servir
// this function runs as user1, then changes to user2 to have access to the
file
// fileOfAnotherUser.rar and copies that file to the disk c: of the user 1
function CopyFile(User, domain, password: string): boolean;
var
bReturn: Boolean;
hLogon: THandle;
fout : tfilestream;
fin : tfilestream;
begin
// you area acting as user 1 (default user)
result := false;
if not LogonUser(PChar(User), Pchar(domain), PChar(password),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_WINNT50, hLogon) then
begin
showmessage(SysErrorMessage(getlastError())) ;
exit;
end;

// remember create this file before to do impersonate.
// After impersonate, you will not be able to access to the disk c: to
create the file, but you can
// write bytes from stream if the file is created before.
fout := TfileStream.Create('c:\myNewFile.rar', fmCreate );

if not ImpersonateLoggedOnUser(hLogon) then
begin
showmessage(SysErrorMessage(getlastError())) ;
exit;
end;
// From this point, you are acting as user2

//**************************************** comenzo de proceso loguineado
como outro usuario
fin := TfileStream.Create('\\cont-alfonsopl\info\fileOfAnotherUser.rar',
fmOpenRead );
fout.CopyFrom(fin,fin.Size);
freeAndNil(fout);
freeAndNil(fin);
//**************************************** fin de proceso loguineado
como outro usuario

RevertToSelf();
// From this point, you are acting as user 1
result := true;


end;

"Miguel Angel Campos" wrote:

Espero que este link te sirva, es un poco avanzado al utilizar PInvoke y
ciertas funciones de seguridad del sistema operativo, pero está más o menos
claro.

http://www.codeproject.com/csharp/lsadotnet.asp

Un Saludo,

Miguel Angel Campos
MCAD.NET

"Manuel Conde" escribió en el
mensaje news:
> Hola a todos,
> Todavía soy novato en lo de impersonation (lo conocí ayer) y por lo que he
> leido parece que me sirve para la aplicación que estoy haciendo en mi
> trabajo.
> Tengo una aplicación que se ejecuta en los pc's de los usuarios, y en un
> determinado momento, la aplicación ha de acceder a un directorio para el
> cual
> sólo un usuario privilegiado tiene acceso.
> Mi pregunta es: Si yo conozo el login y la password de ese usuario,
> ¿podría
> en un determinado momento mi aplicación actuar como ese usuario
> privilegiado,
> acceder a dicho directorio, y luego seguir ejecutandose con los permisos
> del
> usuario normal?
> Si alguien tiene algunas líneas de código, se agradecerán...
> Muchas gracias a todos.
> Un Saludo,
> Manuel



Respuesta Responder a este mensaje
#8 Manuel Conde
26/07/2005 - 10:18 | Informe spam
He encontrado la solución a mi problema. Gracias... Ahí va el código para
quien le pueda servir
// this function runs as user1, then changes to user2 to have access to the
file
// fileOfAnotherUser.rar and copies that file to the disk c: of the user 1
function CopyFile(User, domain, password: string): boolean;
var
bReturn: Boolean;
hLogon: THandle;
fout : tfilestream;
fin : tfilestream;
begin
// you area acting as user 1 (default user)
result := false;
if not LogonUser(PChar(User), Pchar(domain), PChar(password),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_WINNT50, hLogon) then
begin
showmessage(SysErrorMessage(getlastError())) ;
exit;
end;

// remember create this file before to do impersonate.
// After impersonate, you will not be able to access to the disk c: to
create the file, but you can
// write bytes from stream if the file is created before.
fout := TfileStream.Create('c:\myNewFile.rar', fmCreate );

if not ImpersonateLoggedOnUser(hLogon) then
begin
showmessage(SysErrorMessage(getlastError())) ;
exit;
end;
// From this point, you are acting as user2

//**************************************** comenzo de proceso loguineado
como outro usuario
fin := TfileStream.Create('\\cont-alfonsopl\info\fileOfAnotherUser.rar',
fmOpenRead );
fout.CopyFrom(fin,fin.Size);
freeAndNil(fout);
freeAndNil(fin);
//**************************************** fin de proceso loguineado
como outro usuario

RevertToSelf();
// From this point, you are acting as user 1
result := true;


end;

"Miguel Angel Campos" wrote:

Espero que este link te sirva, es un poco avanzado al utilizar PInvoke y
ciertas funciones de seguridad del sistema operativo, pero está más o menos
claro.

http://www.codeproject.com/csharp/lsadotnet.asp

Un Saludo,

Miguel Angel Campos
MCAD.NET

"Manuel Conde" escribió en el
mensaje news:
> Hola a todos,
> Todavía soy novato en lo de impersonation (lo conocí ayer) y por lo que he
> leido parece que me sirve para la aplicación que estoy haciendo en mi
> trabajo.
> Tengo una aplicación que se ejecuta en los pc's de los usuarios, y en un
> determinado momento, la aplicación ha de acceder a un directorio para el
> cual
> sólo un usuario privilegiado tiene acceso.
> Mi pregunta es: Si yo conozo el login y la password de ese usuario,
> ¿podría
> en un determinado momento mi aplicación actuar como ese usuario
> privilegiado,
> acceder a dicho directorio, y luego seguir ejecutandose con los permisos
> del
> usuario normal?
> Si alguien tiene algunas líneas de código, se agradecerán...
> Muchas gracias a todos.
> Un Saludo,
> Manuel



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida