Foros del Web » Programación para mayores de 30 ;) » .NET »

Un metodo para seguridad ???

Estas en el tema de Un metodo para seguridad ??? en el foro de .NET en Foros del Web. No supe como ponerle al titulo El punto es por ejemplo: una intranet, el usuario se autentifica e ingresa, luego puede navegar en el sitio, ...
  #1 (permalink)  
Antiguo 15/10/2004, 08:39
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Información Un metodo para seguridad ???

No supe como ponerle al titulo
El punto es por ejemplo: una intranet, el usuario se autentifica e ingresa, luego puede navegar en el sitio, pero si el copia la url de cualquiera de esas paginas y se la envia au namigo y el la pone en su explorador y a la pagina se abre, eso esta mal !!!!

Como hacen ustedes para asegurar es, me imagino que es con cookies, pueden darme un ejemplo con codigo

Me encanta el foro
  #2 (permalink)  
Antiguo 15/10/2004, 09:08
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
ok ya he leido tus post anteriormente y como que no te entiendo , este te entendi.. ok eso es autentificacion..

tienes que crear una pagina de login,, aqui tienes un ejemplo

Código HTML:
<%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Web.Security " %>
<script runat="server">

    Sub Login_Click(Src As Object, E As EventArgs)
	

    
        If UserEmail.Value = "usuario" And UserPass.Value = "pass"
            FormsAuthentication.RedirectFromLoginPage(UserEmail.Value, PersistCookie.Checked)
               Response.Redirect("ver.aspx")
        Else
            Msg.Text = "Datos invalidos: ingrese neuvamente"
        End If
    End Sub

</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head>
<body background="../Fondo_home/fondo-azul.gif">
    <form runat="server">
          <table>
            <tbody>
                <tr>
                    
        <td> <font color="#FFFFFF">Usiario:</font></td>
                    <td>
                        <input id="UserEmail" type="text" runat="server" />
                        <input id="mail" type="hidden"  runat="server" /></td>
                    <td>
                        <ASP:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserEmail"></ASP:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    
        <td> <font color="#FFFFFF">Password:</font></td>
                    <td>
                        <input id="UserPass" type="password" runat="server" /></td>
                    <td>
                        <ASP:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="*" Display="Static" ControlToValidate="UserPass"></ASP:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    
        <td> <font color="#FFFFFF">Cookie persistente</font>:</td>
                    <td>
                        <ASP:CheckBox id="PersistCookie" runat="server"></ASP:CheckBox>
                    </td>
                    <td>
                    </td>
                </tr>
            </tbody>
        </table>
        <asp:button id="Button1" onclick="Login_Click" runat="server" text="Entrar"></asp:button>
        <p>
            <asp:Label id="Msg" runat="server" font-size="10" font-name="Verdana" forecolor="red"></asp:Label>
        </p>
    </form>
</body>
</html> 
y depeus tu pagina donde quieres que este la infromacion clasificada o restringida..

Código HTML:
<%@ Page Language="VB" Debug="true" %>
<%@ import Namespace="System.Web.Security " %>
   Sub Page_Load(Src As Object, E As EventArgs)
        Welcome.Text = "Hola, " + User.Identity.Name
    End Sub

y en tus etiquetas html
pones la label
<asp:Label id="Welcome" runat="server" forecolor="White"></asp:Label> 
y depues tienes que crear en tu archivo web.config

Código HTML:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" path="/" loginUrl="login1.aspx" protection="All" timeout="30">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration> 
recuerda que puedes convinar esto como te plasca ya de pende de lo que quieras hacer..

ahora para hacer que la utentificacion te funcione y no te marca que error vete a tu administrador de IIS y en el directorio que quieres que este seguro el cual contendra todoa la informacion clasificada,, dale click derecho en propiedades y crealo com aplicacion asi todos los archivos que esten dentro de ese directorio nadie los podra ver si no das es el password.. es decir

wwwroot/mispaginas/acceso_restringido/

acceso_restringido, lo tienes que convertir en aplicacion para que todas las paginas que contengan ese directorio, nadie las pueda ver, si no das el password

capichi?????????
pero explicate mejor
__________________
solo firma
  #3 (permalink)  
Antiguo 15/10/2004, 12:06
Avatar de luiscl  
Fecha de Ingreso: abril-2004
Ubicación: Zaragoza
Mensajes: 305
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Fher.

Me viene genial este post que has hecho, porque estaba con el tema de la seguridad. Tengo una duda de novato (asi que discúlpame si la respuesta es obvia y no la veo):

Qué gano exáctamente metiendo la autentificación por forms, en vez de símplemente comprobando que el usuario y contraseña son los que yo busco con una claúsula if. Es decir:

if usuario.text = "yo" and contraseña.text = "yotambien" then
response.redirect("dondesea.aspx")
end if

Sé que evidentemente hay un motivo claro, pero no cojo la parte técnica del asunto.

Con lo del directorio...trabajo con el w2000pro, y no he sido capaz de ver dónde puedo convertir una carpeta de aplicación (qué desesperación...hoy es uno de esos días que a uno no le sale nada).

Gracias por orientarme...
__________________
Pide lo que quieras...y luego paga por ello
  #4 (permalink)  
Antiguo 15/10/2004, 12:17
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
Código HTML:
if usuario.text = "yo" and contraseña.text = "yotambien" then
response.redirect("dondesea.aspx")
end if
pues el response redirect se pone a la pagina que quieras de inicio dentro de tu directorio protegido, si no le pones esto por dafault va a mostrar una pagina llamada index o algo asi la puedes condigurar pero no cambiar el nombre asi que se pone el response para que te redireccione a la pagina que quieres..

ahora en cuanto a lo de crear un directorio como aplicacion que es como se trabaja este metodo pues panel de control--- erramientas administrativas--- adminisitracion de servicios de internet IIS lo habres y en tu sitio determinado bucas la carpeta o subcarpet que quieres que corra la aplicacion de autentificacion, uan vez que escogiste la que quieres le das propiedad des y en la pestana DIRECTORIO, buscas CONFIGURACION DE APLICACION y donde dice nombre de la aplicacion le das crear y te mostrara por default la carpeta que quieres porteger

ojo si esta caperta tiene subcarpetas, todas estas tambien estaran protegidas
...

pero ojo.. yo estudio seguridad en computo y por ahi anda un bug para burlar este metodo en base a una falla no hay un exploit para esto, pero si esta en investigacion y algunos juankers andan en busca de desarrollar esto ,

asi que informate de este bug yo lo publique en este foro y nadie me peloooo , ok cuando les juanken sus aplicaciones no lloren

chauu
__________________
solo firma
  #5 (permalink)  
Antiguo 15/10/2004, 18:51
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Aunno pruebo el codigo, lo vi temprano hoy, pero no lo pruebo aun porque me tire un poco al diseño para relajarme un poco.

Yap, Graxs
  #6 (permalink)  
Antiguo 29/10/2004, 08:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
hola FHER, estube probando tu codigo y la verdad no se si me esta funcionando del todo bien por que hay partes que no entiendo sobre todo el archivo de configuracion; si yo ya cuento con un archivo de configuracion es necesario modificarlo o es necesario cambiarlo por el tu yo????
  #7 (permalink)  
Antiguo 29/10/2004, 08:40
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
solo tienes que modificarlo,.. y agregar esa configuracion para autentificacion en tu web.config

Código:
<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" path="/" loginUrl="login1.aspx" protection="All" timeout="30">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
si no estoy mal esta parte la agregas en tu web.config
__________________
solo firma
  #8 (permalink)  
Antiguo 29/10/2004, 09:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
ok. gracias voy a implemetarlo; sino es mucha molestia tines algun ejemplo para encriptar tanto el nombre de usuario como el password
  #9 (permalink)  
Antiguo 29/10/2004, 09:55
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
hasta ahora no he llegado a encriptar nada porque todavia no llego a ese parte
pero si te sirve de referencia

http://msdn.microsoft.com/library/de...ClassTopic.asp

qui vienen ejemplos...
__________________
solo firma
  #10 (permalink)  
Antiguo 29/10/2004, 10:09
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
Mira me manda el siguiente error por causa del archivo de configuracion. "Error al intentar ejecutar el proyecto: No se ouede iniciar la depuracion en el servidor Web. Error en el servidor al intentar enviar una solicitud de depuracion de http" eso pasa exactamente al modificar estaesta linea:

<authentication mode="Windows"/>
</authentication>

por esta otra

<authentication mode="Forms"/>
<forms name=".ASPXUSERDEMO" path="/" loginUrl="login1.aspx" protection="All" timeout="30">
</forms>
</authentication>
  #11 (permalink)  
Antiguo 29/10/2004, 10:15
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola Fher justo estoy tambien probando el codigo, por fin y me sale ese error

Yo estoy trabajdnp con aplicacio web, lo que te decia de visual era sobre el codebehind ¿tu no lo ocupas?

Oye puedes explicar mas el ejemplito, si no es mucha la molestia digo yo

  #12 (permalink)  
Antiguo 29/10/2004, 10:20
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
haber haber esta linea que estas cambiando
Código:
<authentication mode="Windows"/> 
</authentication>
le estas diciendo que la autentificacion es por windows osea que sale una venta de windows pidiendote nombre y password

como yo te lo estoy dando <authentication mode="FORMS"/>
</authentication>, tienes que crear una form con login y password . para que esto funcion,,,

como lo estas haciendo con autentificacion por windows o por webforms??

aqui esta un ejmplo de autentificacion por webform.....

http://www.15seconds.com/issue/020220.htm
__________________
solo firma
  #13 (permalink)  
Antiguo 29/10/2004, 10:25
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
Código:
Hola Fher justo estoy tambien probando el codigo, por fin y me sale ese error

desde el 15 de septiembre que posteaste esto, hasta ahora lo has probado pense que ya lo habias hecho

Código:
Yo estoy trabajdnp con aplicacio web, lo que te decia de visual era sobre el codebehind ¿tu no lo ocupas?
el Vs no lo ocupo quiza porque cuando empese a programar fue en note pad, sin nada de codebhind y todo mesclado en la pagina , he ahi el porque no ocupo el codebehind ni el andles ni nada

Código:
Oye puedes explicar mas el ejemplito, si no es mucha la molestia digo yo
para salir de dudas visita este link
y no me digas que no le entiendes aunque sea un poquito al ingles porque da la casualidad que los buenos ejemplos estan en el..

http://www.15seconds.com/issue/020220.htm

hasta luego ...
__________________
solo firma
  #14 (permalink)  
Antiguo 29/10/2004, 10:59
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Hola Fher, ya me estas retando, y me da rabia porque he estado todo este tiempo programa que te programa, y ya ahora que tengo desarrollada una parte de la aplicacion que debo restringir voy a empezar a ver esto. He recontratequeleido tu post y aun no digiero.

Ten paciencia, no seas lloron y sigue ayudandome

  #15 (permalink)  
Antiguo 29/10/2004, 11:11
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
Código:
Hola Fher, ya me estas retando, y me da rabia porque he estado todo este tiempo programa que te programa, y ya ahora que tengo desarrollada una parte de la aplicacion que debo restringir voy a empezar a ver esto. He recontratequeleido tu post y aun no digiero.

Ten paciencia, no seas lloron y sigue ayudandome


.. pues si te estoy ayudando anaerol , y no te lo dije en mal plan si no que pense que ya le habias entendido y pense que ya habias pasado a otro etapa pero depronto me sales conque no les ha captado .. ya te mande el ejemplo.. en ese link viene un codigo para que bajes y pruebas. yo tengo este mismo codigo que tu estas probando y nose porque no te funciona, solo qe a diferencia del tuyo yo declaro un usuario pero como te habia comentado ateriormente tu lo puedes poner a tu manera para que tus usuarios los llames de una base de datos,,,

que parte no entiendes corazon ??
__________________
solo firma
  #16 (permalink)  
Antiguo 29/10/2004, 12:01
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Mmmm que dulce

Yap ayudame, quiero saber unas cositas.

En mi sitio tendre una intranet para la gente de la organizacion
tambien una parte de reserva de horas, a la que acceden alumnos, no gente de la organizacion.

Entonces pienso que tendre 2 subdirectorios ¿es correcto?

Ahora quiero saber, como trabajar esto, ¿en una sola aplicacion web?
si fuese asi como voy creando nuevos webform en un directorio distinto al principal.

Eso por ahora
  #17 (permalink)  
Antiguo 29/10/2004, 12:11
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
ok bueno tienes una intranet...

gente de organizacion...

alumnos....

segun entiendo los dos pueden entrar a la intranet

la cual tu directoria de aplicacion se llama intranet

dentro de intranet crear un subdirecorio llamado alumnos el cual segun creo lo creas tambien como aplicacion para que solo los alumnos accedan a el y no todos los de la organizacion..

intranet
|
|
gente de organizacion, alumnos
|
|
|--- solo alumnos
__________________
solo firma
  #18 (permalink)  
Antiguo 29/10/2004, 12:48
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Entendiste mal

A la intranet solo entra la gente de la organizacion
y al sistema de reserva de horas entran los alumnos

estas dos cosas estan en el sitio web

tendre que hacer dos subdirectorio s???
  #19 (permalink)  
Antiguo 29/10/2004, 12:49
Avatar de Fher  
Fecha de Ingreso: febrero-2003
Ubicación: En algun lugar de cancun
Mensajes: 384
Antigüedad: 21 años, 9 meses
Puntos: 0
asi es uno para la intranet y otro para los alumnos
__________________
solo firma
  #20 (permalink)  
Antiguo 29/10/2004, 12:51
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Okey
pero no me dices como creo esos directorios
puedo hacer las plaicaciones por separado
luego copiar los directorios al directorio principal ???
eso ??
  #21 (permalink)  
Antiguo 29/10/2004, 16:08
Avatar de GustavoPY  
Fecha de Ingreso: marzo-2002
Ubicación: Capiatá
Mensajes: 88
Antigüedad: 22 años, 8 meses
Puntos: 0
Tu tienes esta línea de código:

<authentication mode="Forms"/>
<forms name=".ASPXUSERDEMO" path="/" loginUrl="login1.aspx" protection="All" timeout="30">
</forms>
</authentication>

En la primera cerraste tu etiqueta, elimina la barra invertida "/"

<authentication mode="Forms">
<forms name=".ASPXUSERDEMO" path="/" loginUrl="login1.aspx" protection="All" timeout="30">
</forms>
</authentication>
__________________
*********************************
Gustavo Arriola
http://www.gustavoarriola.com
*********************************
  #22 (permalink)  
Antiguo 30/10/2004, 06:55
Avatar de lucxx  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 321
Antigüedad: 21 años
Puntos: 0
Bueno, yo solo quería apuntar que no es necesario (ni recomendable) marcar la carpeta a proteger como aplicacion en IIS, basta con poner en ella un web.config unicamente con:<configuration>
<system.web>
<authorization>
<allow roles="unRol"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>

Salu2
  #23 (permalink)  
Antiguo 31/10/2004, 21:40
 
Fecha de Ingreso: octubre-2004
Ubicación: Santiago Chile
Mensajes: 119
Antigüedad: 20 años, 1 mes
Puntos: 0
Bien pero esa carpeta subdirecorio, puede ser una aplicacion hecha aparte ???
  #24 (permalink)  
Antiguo 03/11/2004, 10:32
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
lucxx ; podrias explicarme bien eso que escribiste la verdad no estoy entendiendo del todo para que realmente me sirve eso y me agradaria aprenderlo bien. si eres tan amable
  #25 (permalink)  
Antiguo 03/11/2004, 10:41
Avatar de lucxx  
Fecha de Ingreso: noviembre-2003
Ubicación: Madrid
Mensajes: 321
Antigüedad: 21 años
Puntos: 0
pero... ¿que es lo que no entiendes? ¿Utilizas ya autenticación basada en formularios?

Salu2
  #26 (permalink)  
Antiguo 03/11/2004, 12:21
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
Lo que pasa es que ya provee con tu ejemplo y no es exactamente lo que quiero. -necesito autentificar a la hora de pasar de un webform a otro, pero no me permite hacerlo a la hora de modificar

<authentication mode="Windows"/>
<authorization>

por esta otra

<authentication mode="Forms">
<forms name="AuthCookie"
path="/"
oginUrl="login.aspx"
protection="All"
timeout="30">
</forms>
<authorization>

Cheque el ejemplo que postea ¬¬Fher pero es exactamente igual al que el tiene y me marca el mismo error hay cosas que no se a que se refieren como:

name="AuthCookie"

quisiera ver si me pudes ayudar en esto.
  #27 (permalink)  
Antiguo 05/11/2004, 13:55
 
Fecha de Ingreso: octubre-2004
Mensajes: 25
Antigüedad: 20 años, 1 mes
Puntos: 0
hola como estas. Solo quiero preguntar si pudiste resolver el problema del archivo de configuracion y en caso de que si; ¿como lo resolviste?
  #28 (permalink)  
Antiguo 30/11/2004, 16:47
 
Fecha de Ingreso: noviembre-2004
Mensajes: 1
Antigüedad: 20 años
Puntos: 0
Ayuda urgente sobre autentificacion

Miren amigos cheken estoy programando y el codigo ke tu das fher ia lo utilize pero no me funciona para empezar no me deja ver el boton de inicio de seción y estuebe checando parte por parte del codigo y no mas no jala asi ke buske respuesta y me encontre con ke mi server es FREEDBS y ke no jala con ASP.net asi me dijo un ww ke programa devolper's en PEMEX mira

http://www.universidadrealistica.edu.mx/asp/login.aspx checate el codigo ia se de esa o default.aspx entonces asi me decidi usar PHP y pues ia hize el codigo y me encontre con uan forma facilizima de hacerlo pero ke kreen solo funciona vean era algo asi
?
if (!isset($_SERVER['PHP_AUTH_USER'])) {
header("WWW-Authenticate: Basic realm=\"My Realm\"");
header("HTTP/1.0 401 Unauthorized");
echo "Text to send if user hits Cancel button\n";
exit;
} else {
echo "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
echo "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";

pero pues la variable AUTH_USER no funciona para IIE y apache configuraco como CGi p para CGI algo asi asi ke pues ia no pude de esta forma asi ke pase a lo siguiente:
Igual con PHP hize mi pagina y todo el rollo solo ke ahora mediante formas y ia hago todo el rollo pero ke kreen al momento de correrlo pues ke no jala porke el metodo POST no esta permitido este server FREEBDS o apache 1.2.6 algo asi no es mio una empresa de hosting me lo da ke puedo hacer en ese kaso??? alguien auxilieme miren

http://www.universidadrealistica.edu.mx/php/index.php esta pagina tiene la forma y la pasa a un archivo llamado control.php el cual tambien puedes accesar entonces alguien me puede decir por ke me falla todo esto?? codigo ke utilize para INDEX.php y todo las demas esta aki

INDEX.php

<form action="control.php" method="POST">
<table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="2" align="center" <?if ($_GET["errorusuario"]=="si"){?> bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
<?}else{?>
<bgcolor=#cccccc>Introduce tu clave de acceso
<?}?></td>
</tr>
<tr>
<td align="right">USER:</td>
<td><input type="Text" name="usuario" size="8" maxlength="50"></td>
</tr>
<tr>
<td align="right">PASSWD:</td>
<td><input type="password" name="contrasena" size="8" maxlength="50"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
</tr>
</table>
</form>
<br>
<br>
Datos correctos:
<br>
<br>
User: miguel
<br>
Passwd: qwerty
</body>
</html>

control.php

<?
//vemos si el usuario y contraseña es váildo
if ($_POST["usuario"]=="miguel" && $_POST["contrasena"]=="qwerty"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION["autentificado"]= "SI";
header ("Location: aplicacion.php");
}else {
//si no existe le mando otra vez a la portada
header("Location: index.php?errorusuario=si");
}
?>

ia lo se me prolongue con todo esto pero pues es ke necesito su ayuda de antemano gracias bye espero me puedan ayudar byeeeeeeeeeeeeeeeee
  #29 (permalink)  
Antiguo 29/12/2004, 12:45
 
Fecha de Ingreso: mayo-2003
Ubicación: Monte VI D.E.O.
Mensajes: 78
Antigüedad: 21 años, 6 meses
Puntos: 0
Hola a todos, no sé si ya habrán solucionado el tema, por las dudas les hago mi aporte, va a ser largo porque por lo que veo hay quizas algunas cosas con las que no están familiarizados algunos (yo no lo estoy del todo, pero como anerol tuve que aprender a los golpes, sé lo que se siente), ahi les va mi aporte:

Tengo una aplicacion que basicamente hace lo mismo que la de anerol y la de cualquier otra persona: en una intranet, determinado tipo de gente se conecta, se loguea, se le autentica y a partir de ahi comienza a hacer desastres oj oj oj

Una diferencia que tengo con el proyecto de anerol es que en mi intranet hay varias aplicaciones, y antes de que yo llegara, el usuario por lo general, podia usar en el día 3 o 4 de esas aplicaciones, por lo que se volvia un poco tedioso tener que autenticarse en cada una de las aplicaciones, cuando llegué mi Jefe lo primero que me pidió fue que implementara lo que se conoce como "Single Sign On" o la caracteristica de que una persona se loguee con un usuario y un password y luego la "Aplicacion Central" le diga a qué aplicaciones ese usuario tiene acceso, donde le aparece un datagrid con el nombre y la descripcion de las aplicaciones, basta que el usuario haga click en la que quiera y de ahi en adelante ya está autenticado.

En mi caso particular, tengo una aplicacion bastante parecida del tipo que se conecta gente de afuera de la empresa y accede a determinada parte, y luego está la gente de adentro que se conecta a otra parte, yo no hice 2 subdirectorios, simplemente lo puse todo dentro de un directorio, la diferencia está cuando se loguea la persona, que lo paso a explicar:

En primer lugar aqui son medios maniaticos, asi que miren como va la mano:

En el web.config tengo una clave de registro donde está almacenado el string de conexion encriptado, es decir, nadie que abra el web.config puede ver la cadena de conexion (usuario / password de la bdd incluidos).
Ese string encriptado lo certifico mediante un webservice, mas o menos de la siguiente forma:

Código:
Public Class Datos

Private Shared Function ObtenerConexion() As String

Dim MiWebService As New MiWebService.MiWebMetodo
Dim ConexionOk As String

ConexionOk = MiWebService.Validar(ConfigurationSettings.AppSettings("StrEncrip"))
'Aqui el valor de ConexionOk es el string aun encriptado 
'ya que mi webservice lo devuelve encriptado

Dim Desencriptado As String
Desencriptado = Kerberos.Desencriptar(ConexionOk)

Return Desencriptado

End Function
End Class
Bien, toda esta perolata es solo para obtener el string de conexion que usa el proyecto, para chequear el usuario y, en funcion de el usuario que sea, validarlo, autorizarlo, etc. uso el mismo WebService, tengo una pagina Login.aspx (que original), donde hay para poner usuario y password, los usuarios se dividen en dos categorias: 1 y 2, si es 1, entonces es un usuario de adentro de la empresa, si es 2, es de afuera (imaginálo como estudiantes y eso otro).
Lo que hago es en el evento click del boton Entrar que tengo en mi pagina login.aspx es algo como lo siguiente:

Código:
Session("Usuario") = txtUsuario.text
Session("Pass") = txtPass.text

Dim MiWebService As New MiWebService.MiWebMetodo
Dim Ok As Boolean

Ok = MiWebService.ValidarUsuario(Session("Usuario"),Session("Pass"))

If Ok Then
   'El usuario es correcto
Else
   'El usuario o contraseña son incorrectos
End If
Bueno, esto agregado a la autentificacion por Formularios no?
Como ven, mi metodo de seguridad chequea todo en el webservice, no sé si es el mejor, pero trato de hacerlo, hay un monton de cosas que por tiempo y espacio y no explico muy muy bien, como por ejemplo, la clase Kerberos que utilizo, o cómo es la implementacion del WebService (quizas haya gente que no sepa como implementarlo), como ven soy de hablar mucho, por lo que se volvería interminable si entrara a explicar cada uno de los pasos, pero si alguien necesita "Codigo a la carta" para autentificar usuarios, puedo darle una mano sin problemas, o, lo que creo que sería aun mejor, cualquiera que me diga qué parte de lo que expliqué necesita mas desarrollo de explicacion, no tengo problema en postearlo, por ejemplo, podría pasar el codigo fuente de mi WebService, o de la clase Kerberos (que de hecho me la pasaron por aqui), en mi proyecto implemento un monton de cosas raras (por lo menos para mi), solo algunos detalles a considerar:

Los usuarios y pass los guardo en una BDD, el pass lo guardo encriptado, mi web service usa procedimientos almacenados para obtener los usuarios, los pone en un data set (obtiene un solo usuario obviamente) y usa el For each para comparar el pass encriptado que obtuvo, con el que puso el usuario.
Otro detalle, la clase Kerberos es la que se encarga de encriptar y desencriptar, la tengo implementada tanto en mi proyecto como en el webservice, ya que los dos encriptan y desencriptan...
Si alguno pudo ver, utilizo Desarrollo a 3 Capas, la ventaja para mi principal de esto es aislar el codigo, y reutilizarlo, por ende, cuando algo cae, es mas facil entrar a debugear para ver donde se cayó.
Lo ultimo: desarrollo en VB.net con SQL 2000

Bien, pliz, mi intencion es colaborar como tantas veces lo han hecho, asi que de ultima, veré si puedo postear estas cosas que les digo en las FAQ's de .Net lamentablemente no tengo servidor para subir los archivos relacionados, sino lo haría con mucho gusto...

Espero que les haya servido de algo y que tengan un muy buen Feliz Año Nuevo!!!!!
__________________
:adios: Henry Rodriguez :adios:
El todo es mucho mas que la suma de las partes<-- No se quien lo dijo pero suena interesante :)
  #30 (permalink)  
Antiguo 30/12/2004, 14:35
Avatar de HenrydeSousa  
Fecha de Ingreso: septiembre-2004
Ubicación: Venezuela
Mensajes: 300
Antigüedad: 20 años, 2 meses
Puntos: 2
Si no te quieres complicar tanto, haz algo sencillito, simplemente una vez que la auntenticacion sea correcta, asignale a una variable de sesion un valor, por ejemplo 1.
Luego en cada formulario preguntas por el valor de esa variable de sesion. Si es igual a 1 quiere decir que paso por el formulario principal, sino quiere decir que entro al formulario por url, entonces lo mandas con un response.redirect para la pagina de entrada.
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 22:24.