Problema de Seguridad?

03/08/2004 - 17:40 por Frank | Informe spam
Hola.
En una aplicación en ASP.Net tengo que acceder a unos
archivos que se encuentran en otra maquina la cual tengo
mapeada como disco F:
Tengo unas dll que hacen ese trabajo para mi aplicación
Windows, pero cuando las quiero utilizar en ASP.Net la dll
no puede encontrar los archivos. Mientras que si encuentra
otros archivos en el disco C:
Lo que usa mi codigo para ver si existen los archivos es:

If System.IO.File.Exists(strDir & strArch & ".dbf") Then

¿Este es un tema de permisos del usuario que se
impersonaliza ASP.Net?
¿Si es asi como lo solucionarian?

desde ya Muchas Gracias
 

Leer las respuestas

#1 Sergiou
03/08/2004 - 18:00 | Informe spam
<%@ Page Language="VB" %>
<%@ Import Namespace = "System.Web" %>
<%@ Import Namespace = "System.Web.Security" %>
<%@ Import Namespace = "System.Security.Principal" %>
<%@ Import Namespace = "System.Runtime.InteropServices" %>

<script runat=server>
Dim LOGON32_LOGON_INTERACTIVE As Integer = 2
Dim LOGON32_PROVIDER_DEFAULT As Integer = 0

Dim impersonationContext As WindowsImpersonationContext

Declare Auto Function LogonUser Lib "advapi32.dll" (ByVal lpszUsername
As String, _
ByVal lpszDomain As String, _
ByVal lpszPassword As String, _
ByVal dwLogonType As Integer, _
ByVal dwLogonProvider As Integer, _
ByRef phToken As IntPtr) As Integer
Declare Auto Function DuplicateToken Lib "advapi32.dll" _
(ByVal ExistingTokenHandle As IntPtr, _
ImpersonationLevel As Integer, _
ByRef DuplicateTokenHandle As IntPtr) As Integer

Public Sub Page_Load(s As Object, e As EventArgs)
If impersonateValidUser("username", "domain", "password") Then
'Inserta aquí el código que se ejecuta bajo el contexto de
seguridad de un usuario específico.
undoImpersonation()
Else
'Su representación falló. Por tanto, incluya aquí un mecanismo a
prueba de error.
End If
End Sub

Private Function impersonateValidUser(userName As String, _
domain As String, password As String) As Boolean

Dim tempWindowsIdentity As WindowsIdentity
Dim token As IntPtr
Dim tokenDuplicate As IntPtr

If LogonUser(userName, domain, password, LOGON32_LOGON_INTERACTIVE, _
LOGON32_PROVIDER_DEFAULT, token) <> 0 Then
If DuplicateToken(token, 2, tokenDuplicate) <> 0 Then
tempWindowsIdentity = new WindowsIdentity(tokenDuplicate)
impersonationContext = tempWindowsIdentity.Impersonate()
If impersonationContext Is Nothing Then
impersonateValidUser = False
Else
impersonateValidUser = True
End If
Else
impersonateValidUser = False
End If
Else
impersonateValidUser = False
End If
End Function
Private Sub undoImpersonation()
impersonationContext.Undo()
End Sub
</script>

Frank wrote:

Hola.
En una aplicación en ASP.Net tengo que acceder a unos
archivos que se encuentran en otra maquina la cual tengo
mapeada como disco F:
Tengo unas dll que hacen ese trabajo para mi aplicación
Windows, pero cuando las quiero utilizar en ASP.Net la dll
no puede encontrar los archivos. Mientras que si encuentra
otros archivos en el disco C:
Lo que usa mi codigo para ver si existen los archivos es:

If System.IO.File.Exists(strDir & strArch & ".dbf") Then

¿Este es un tema de permisos del usuario que se
impersonaliza ASP.Net?
¿Si es asi como lo solucionarian?

desde ya Muchas Gracias

Preguntas similares