Autor
|
Tema: Pasar usuario de una aplicación web a otra (Leído 3,439 veces)
|
nascent
Desconectado
Mensajes: 6
Me haces muy feliz hijo
|
Buenos días con todos.
Tengo el siguiente escenario y quisiera me orienten como poder solucionarlo de la mejor manera.
Tengo una aplicación web en mvc con c#, desde esta aplicación me autentico con AD y después me carga un panel (con varios iconos) del cual llamo a otras aplicaciones de la empresa (tenemos las fuentes, también están en c# y están en otros servidores).
Actualmente llamo a cada aplicación del panel por POST y le mando el usuario, las aplicaciones solo cogen el usuario asumiendo que ya esta autenticado y con ese usuario armo sus perfiles.
Mi consulta es ¿cual es la forma correcta de ingresar a los otros aplicativos desde mi panel? ya que basta con saber el usuario que le mando por POST para poder ingresar a mis aplicaciones del panel desde cualquier otros sitio.
De ante mano gracias por las respuestas
|
|
|
En línea
|
************************03-07-2007************************ No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.
|
|
|
LaThortilla (Effort)
Desconectado
Mensajes: 234
¿En que vida harás lo que en esta no?
|
Desconozco la estructura de tu sistema, o si las aplicacioens estan en distintos servidores.
Lo que tienes que hacer es generar sessiones. en php existen las variables de session, en .net supongo que tambien....
bueno lo que tienes que hacer es:
1. cuando el usuario se autentica, creas en la base de dato un hash (sha1, md5 el que prefieras),con elementos del usuario y datos random, fecha y hora de creación, ip, host y mas.(El fin es crear un identificador único y robusto.)
2. En la tabla que almacenes El hash que creaste, puedes almacenar la fecha de creación, nombre del host, ip y cualquier otro dato del pc desde el que se crea la session (recomendaciones por seguridad, esto puede servir para validar que no se este usando desde 2 pcs distintos)
3. Al mismo tiempo que creas la session en la base en tu servidor vas a crear una variable de session (estas variables de session son variables globales que se crean en el servidor, busca en la documentación de .net como crearlas) en esta variable vas a guardar el hash que es el que va ha servir para autenticarte y validar que en efecto ya iniciaste session...
4. Si llamas a una aplicación que se encuentra en un servidor distinto que en el que creaste la variable de session, tendrás que crear una tabla de tokens, estos tokens son iguales a la session , osea que seran como una subsession pero a una aplicación.
5. una ves crees el token en tu servidor principal, enviaras ese token en el post que haces para llamar a tu aplicacion secundaria, y crearas una hash en la base de datos (Igual que el que cuando creaste la session) y lo guardaras en la tabla de tokens de aplicaciones.
6. en el servidor secundario repetirás el proceso, crearas otra variable de session en el servidor secundario con el hash de aplicacion que generaste.
Nota: esto del token de aplicación es una medida de seguridad. si por algún tipo de ataque el hash de aplicación es capturado solo se tendrá acceso a una parte de tu sistema. esto fuera distinto si lo hicieras todo con el mismo que el de la session general. que en este caso podria acceder a cualquier aplicación.
importante: al finalizar de usar la aplicación cerrar la session y eliminar la variable de session de los servidores primarios y secundarios.
las variables de session generan un tipo de Cookie en el navegador que sirve para autenticarse con el servidor
|
|
« Última modificación: 6 Junio 2017, 01:08 am por LaThortilla (Effort) »
|
En línea
|
|
|
|
nascent
Desconectado
Mensajes: 6
Me haces muy feliz hijo
|
Effort.
Gracias por tomarte el tiempo de explicarlo tan sencillo, me parece buena idea creo que lo implementare ya que tengo aplicaciones en diferentes servidores y en diferentes lenguajes y con esta solución no tendría inconveniente en aplicarlo en aplicaciones con diferente tecnología.
|
|
|
En línea
|
************************03-07-2007************************ No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.
|
|
|
LaThortilla (Effort)
Desconectado
Mensajes: 234
¿En que vida harás lo que en esta no?
|
Effort.
Gracias por tomarte el tiempo de explicarlo tan sencillo, me parece buena idea creo que lo implementare ya que tengo aplicaciones en diferentes servidores y en diferentes lenguajes y con esta solución no tendría inconveniente en aplicarlo en aplicaciones con diferente tecnología.
Un placer. si tienes mas dudas mandame un twitt :V @Lathortilla
|
|
|
En línea
|
|
|
|
nascent
Desconectado
Mensajes: 6
Me haces muy feliz hijo
|
Un placer. si tienes mas dudas mandame un twitt :V @Lathortilla
Effort. Supongo que al enviar el tocken al llamar a la aplicación, como comparo o como se que el tocken viene de mi aplicación principal y no desde otro lugar.
|
|
|
En línea
|
************************03-07-2007************************ No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.
|
|
|
LaThortilla (Effort)
Desconectado
Mensajes: 234
¿En que vida harás lo que en esta no?
|
Bueno lo correcto seria validar la ip desde donde salio el toquen.
la otra es validar que ese toquen exista en la base de datos.
|
|
|
En línea
|
|
|
|
|
|