Foros del Web » Programando para Internet » ASPX (.net) »

Seguridad en un directorio concreto

Estas en el tema de Seguridad en un directorio concreto en el foro de ASPX (.net) en Foros del Web. Hola a todos, Me había planteado la posiblidad de aplicar seguridad basada en Forms, pero no en toda la WebApp, sino solamente en la carpeta ...
  #1 (permalink)  
Antiguo 25/08/2005, 05:10
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Seguridad en un directorio concreto

Hola a todos,

Me había planteado la posiblidad de aplicar seguridad basada en Forms, pero no en toda la WebApp, sino solamente en la carpeta \WebAdmin , ubicada en la raíz de la WebApp, de forma que en el resto de la aplicación se permita el acceso anónimo.

He probado metiendo un nuevo web.config en esa carpeta, pero entonces me requiere dar de alta la carpeta en el IIS como aplicacion.

Puedo hacerlo sin tener que hacer una nueva aplicación?
Si no, qué me recomiendan para lo que quiero hacer? Cual es la opción utilizada normalmente para hacer esto?

Muchas gracias a todos.
Saludos.
__________________
..:: moNTeZIon ::..
  #2 (permalink)  
Antiguo 25/08/2005, 08:43
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Lo puedes hacer modificando el archivo web.config principal:

Código:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
  .....
  </appSettings>
  <location path="WebAdmin" allowOverride="true">
    <system.web>
      <authorization>
        <allow roles="Administradores" />
        <!-- si quieres permitir a usuarios en lugar de a roles -->
        <! -- <allow users="..." /> -->
        <deny users="*" />
      </authorization>			
    </system.web>	
  </location>
<system.web>
   <authentication mode="Forms">
      <forms name="Auth" loginUrl="login.aspx" path="/" />
	......
Espero que te sirva.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #3 (permalink)  
Antiguo 25/08/2005, 09:20
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Gracias Bravenap,

Ahora mismito no lo puedo probar. Estaba ansioso de que alguien me contestara. Lo que me comentas tiene muy buena pinta.
Se supone que podré hacer los "<location path...>" que quiera? Me refiero para permitir otros roles en otras carpetas... Bueno, ya lo pruebo mañana y me contesto

Muchas gracias.
Saludos.
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 25/08/2005, 09:33
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Efectivamente. Se supone que puedes definir los permisos para todos los directorios que quieras. En realidad, la etiqueta <location> funciona como si insertaras un archivo web.config en el directorio al que hace referencia, por lo que, en principio podrías definir todas las características de ese directorio, no sólo las de permisos, sobreescribiendo las del directorio superior. Yo he optado por <location> para no tener desperdigados los archivos web.config por todo el sitio.

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #5 (permalink)  
Antiguo 25/08/2005, 09:38
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Buá! Genial!

Gracias Bravenap.
Un saludo!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 26/08/2005 a las 03:15
  #6 (permalink)  
Antiguo 26/08/2005, 03:16
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Un detalle mas.. El apartado <authentication...> solo ha de existir uno para toda la web?

O también puedo definir el modo de autenticación en cada <location...> (Lo he intentado pero me exige crear una aplicacion en el IIS)

Saludos.
__________________
..:: moNTeZIon ::..
  #7 (permalink)  
Antiguo 26/08/2005, 03:23
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Por desgracia, creo que efectivamente sólo puede existir uno. Por tanto tienes que poner la misma página de autenticación para todo el sitio y después discernir desde ella qué tipo de permisos tienes que habilitar dependiendo del directorio al que se esté intentando acceder.

De hecho, ahora mismo voy a publicar la solución a un tema que planteé hace unos días y que resuelve este problema. No sé si es la manera más ortodoxa pero funciona.

El enlace es este:

http://www.forosdelweb.com/f78/conocer-rol-permitido-directorio-325791/

Un saludo.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #8 (permalink)  
Antiguo 26/08/2005, 03:40
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
OK. Muchas gracias.
Y felicidades por autosolucionarte el problema del otro post!

Un saludo!
__________________
..:: moNTeZIon ::..
  #9 (permalink)  
Antiguo 29/08/2005, 16:33
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Bueno, ya está montado. Pero no me autentica. Tengo lo siguiente en el web.config:

Código:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  .....
  <location path="WebAdmin" allowOverride="true">
    <system.web>
      <authorization>
        <deny users="?" />
      </authorization>
    </system.web>
  </location>
  <system.web>
  .....
    <authentication mode="Forms">
      <forms name="WebAdmin.Cookie" loginUrl="WebAdmin/Login.aspx" protection="All" timeout="10" path="/">
        <credentials passwordFormat="Clear">
          <user name="admim" password="admin"/>
        </credentials>
      </forms>
    </authentication>
    <authorization>
      <allow users="*"/>
    </authorization>
    .....
  </system.web>
  .....
</configuration>
Y en el botón de Login de la página Login.aspx tengo esto:
Código:
If System.Web.Security.FormsAuthentication.Authenticate(txtUsuario.Text, txtPassword.Text) Then
  If chkRecordar.Checked Then
    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, True)
  Else
    System.Web.Security.FormsAuthentication.RedirectFromLoginPage(txtUsuario.Text, False)
  End If
Else '--> Siempre viene aquí
  lblError.Text = "- Usuario o Password incorrectos."
  lblError.Visible = True
End If
Pero el método Authenticate siempre me devuelve False, poniendo los datos de login correctos, claro

Saben si me falta alguna cosa?

Gracias a todos.
Un saludo!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 29/08/2005 a las 16:40
  #10 (permalink)  
Antiguo 30/08/2005, 06:35
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Si proteges el directorio WebAdmin no deberías tener la página Login.aspx en ese mismo directorio si no en uno superior como el raiz.
Prueba a poner FormsAuthentication.Authenticate("admin", "admin") a ver si te devuelve True.

Por otro lado, yo utilizaría mejor en los credenciales una contraseña encriptada con Sha1 o MD5 por si acaso.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #11 (permalink)  
Antiguo 30/08/2005, 13:14
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Gracias una vez más Bravenap.
Provaré ejecutar esa linea a ver qué devuelve. De todas formas eso parece estar bien... en todos sitios lo veo igual o muy parecido.
Quizá puede ser la ubicación de la página de login, probaré a meterla en el directorio raiz.
Lo de la encriptación, vale, me lo iré mirando. Gracias por el consejo. Pero primero, que funcione esto
Un saludo!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 31/08/2005 a las 07:46
  #12 (permalink)  
Antiguo 31/08/2005, 08:19
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola de nuevo.

He estado haciendo las pruebas pero nada. Les explico. Todo está igual que antes, excepto la pagina Login.aspx, que ahora la he puesto en la raiz de la aplicacion, y el apartado authentication del web.config, que ahora lo tengo así:
Código:
<authentication mode="Forms">
  <forms name="WebAdmin.Cookie" loginUrl="Login.aspx" protection="All" timeout="10" path="/">
    <credentials passwordFormat="Clear">
      <user name="admim" password="admin"/>
    </credentials>
  </forms>
</authentication>
Pero el tío sigue yendo al Else cuando le pregunto por el metodo Authenticate(user,passw)

He probado como dice Bravenap, pasandole directamente ("admin","admin") al metodo Authenticate, pero nada, se va al Else.

No tengo errores y no se por donde cogerlo. Se me están acabando las posiblidades. Espero que alguien pueda decirme lo que está ocurriendo.
Muchas gracias a todos.
Saludos!
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 31/08/2005 a las 08:31
  #13 (permalink)  
Antiguo 05/09/2005, 07:07
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Disculpen que vuelva a revivir el post... Pero no salgo de aquí...
A nadie le ha pasado?
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 05/09/2005 a las 09:54
  #14 (permalink)  
Antiguo 08/09/2005, 13:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 42
Antigüedad: 18 años, 8 meses
Puntos: 0
Vos sabes que a mi me esta pasando lo mismo, el codigo que te han pasado es valido ya que lo saque de un libro de asp.net pero no me funciona.
  #15 (permalink)  
Antiguo 09/09/2005, 01:23
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Pues vaya...
Qué se supone que debe ocurrir para que esta linea de True?

If System.Web.Security.FormsAuthentication.Authentica te(txtUsuario.Text, txtPassword.Text) Then

Hay que cambiar algo del web.config? En todo caso supongo que estará en esta linea...

<forms name="WebAdmin.Cookie" loginUrl="Login.aspx" protection="All" timeout="10" path="/">

No entiendo
__________________
..:: moNTeZIon ::..
  #16 (permalink)  
Antiguo 09/09/2005, 12:32
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 4 meses
Puntos: 7
Sólo por curiosidad, te diste cuenta de este detalle?

Código:
<authentication mode="Forms">
  <forms name="WebAdmin.Cookie" loginUrl="Login.aspx" protection="All" timeout="10" path="/">
	<credentials passwordFormat="Clear">
	  <user name="admim" password="admin"/> 
	</credentials>
  </forms>
</authentication>
No debería ser "admin"??

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #17 (permalink)  
Antiguo 09/09/2005, 15:34
Avatar de Bravenap  
Fecha de Ingreso: noviembre-2002
Ubicación: Los Arroyos, El Escorial, Madrid
Mensajes: 2.084
Antigüedad: 21 años, 5 meses
Puntos: 4
Ja ja ja como sea eso. Nos ha pasado a todos, o al menos a mí. Menudos quebraderos de cabeza me han supuesto cosas tan tontas como esas.
__________________
¡¡NO A LA GUERRA!!
Si ponemos a nuestros mensajes títulos adecuados, la gente se animará más a abrirlos y resultarán más útiles en las busquedas. ¡No a los ayuuudaaa, urgenteee y similares!
  #18 (permalink)  
Antiguo 13/09/2005, 02:27
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Cita:
Iniciado por xknown
Sólo por curiosidad, te diste cuenta de este detalle?

Código:
<authentication mode="Forms">
  <forms name="WebAdmin.Cookie" loginUrl="Login.aspx" protection="All" timeout="10" path="/">
	<credentials passwordFormat="Clear">
	  <user name="admim" password="admin"/> 
	</credentials>
  </forms>
</authentication>
No debería ser "admin"??

Saludos
Uff, ya me están temblando las piernas... ... como sea esto.
La verdad, no lo habia visto.
Cuando llegue lo compruebo sin falta...

Saludos!
__________________
..:: moNTeZIon ::..
  #19 (permalink)  
Antiguo 13/09/2005, 09:52
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Buenas señores,
siento lo ocurrido, aunque como bien dice Bravenap, le puede pasar a cualquiera.
Era eso.
Gracias xknown!
__________________
..:: moNTeZIon ::..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:37.