Pasar usuario de una aplicación web a otra

Iniciado por nascent, 5 Junio 2017, 17:44 PM

0 Miembros y 1 Visitante están viendo este tema.

nascent

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
************************03-07-2007************************
No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.

LaThortilla (Effort)

#1
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

nascent

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.


************************03-07-2007************************
No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.

LaThortilla (Effort)

Cita de: nascent en  6 Junio 2017, 17:02 PM
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

nascent

Cita de: LaThortilla (Effort) en  6 Junio 2017, 17:17 PM
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.
************************03-07-2007************************
No creas saberlo todo. Porque siempre habra alguien que sabe mas que tu.

LaThortilla (Effort)

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.