Pregunta:
Fecha: 23-12-2018 03:05:29
(En Español)
Les consulto, haber si pueden ayudarme con algo que quiero hacer. En una red LAN quiero poner un servidor web (solo local) para subir distintos sitios, mi idea es que se haga un solo registro y que esos datos le sirva para ingresar a los distintos sitios, Si inicio sesiona en alguno de ellos le sirva para el los otros sin tener que loguearse nuevamente.
Los sitios tendrían su propia base de datos. Quiero aprovechar que ya hay una BD y tiene una lista de usuarios.
Desde ya muchas gracias y felices fiestas Votos: 0 - Respuestas: 6 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
Un mismo login para distintos sistemas en una intranet[Resuelta]
Buen Día Gente...Les consulto, haber si pueden ayudarme con algo que quiero hacer. En una red LAN quiero poner un servidor web (solo local) para subir distintos sitios, mi idea es que se haga un solo registro y que esos datos le sirva para ingresar a los distintos sitios, Si inicio sesiona en alguno de ellos le sirva para el los otros sin tener que loguearse nuevamente.
Los sitios tendrían su propia base de datos. Quiero aprovechar que ya hay una BD y tiene una lista de usuarios.
Desde ya muchas gracias y felices fiestas Votos: 0 - Respuestas: 6 - Vistas: 10 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 23-12-2018 03:54:01 Tal vez una idea sería crear todos los sitios bajo un directorio raíz. Por ejemplo, el directorio raíz sería /www y los sitios estarían en /www/sitio1, /www/sitio2, etc. El sistema de login lo pondrías en el directorio raíz (/www) y eso permitiría propagar el login (usando sesiones) a cualquiera de los otros sitios. La base de datos de usuarios tendría que ser independiente de cualquier otra base de datos de los sitios que quieres montar. Votos: 0 - Link respuesta
-
Fecha: 23-12-2018 04:03:45 Buen Día Juan. gracias por el aporte, voy tomando la idea, lo voy a dejar abierto unos dias a la espera de otras ideas, mientras voy haciendo practicas.
Saludos.. Votos: 0 - Link respuesta -
Fecha: 23-12-2018 08:49:01 Podría utilizar un token que contenga la información de usuario así como los dominios o sistemas a los que tenga acceso, yo uso este sistema para varias apps de una empresa y va de lujo, se puede saltar de una app a otra y estas realizan el login sin problema con un mismo token de uso, para ello creo el token con esto:
https://jwt.io
de esta manera omito el uso mde sesiones, y lo reemplazo por el token, el cual cambia con cada validación para mantener la seguridad.
por ejemplo:
Clase para crear y descompilar el token
use Firebase\JWT\JWT; class Validar{ public function __construct(){ $this->_secret_key = 'Clave secreta'; $this->_encrypt = 'clave para encriptacion'; } //Crear el token public function crear($data=null){ //Validamos que la data no este vacía if($data==null){ $err = (object) array( 'error' => true, 'message' => "Invalid or empty data supplied." ); return $err; } //validamos que sea un array if(!is_array($data)){ $err = (object) array( 'error' => true, 'message' => "Invalid data format supplied." ); return $err; } $time = strtotime(NOW()); $token = array( 'iat' => $time, 'exp' => $time + (60*60*$this->ini['hours']), 'error' => false, 'data' => $data//Aqui estan contenidos los datos de acceso que quieras agregar al token ); //Generamos el toekn o retornamos el error try{ $encode = JWT::encode($token, $this->_secret_key); return $encode; }catch(\Exception $e){ $err = (object) array( 'error' => true, 'message' => $e->getMessage() ); return $err; } }// //Validar el Token public function _Check($token=null) { if($token==null){ $err = (object) array( 'error' => true, 'message' => "Invalid token supplied." ); return $err; } //Validamos el token try{ $decode = JWT::decode( $token, $this->_secret_key, $this->_encrypt ); return $decode; }catch(\Exception $e){ $err = (object) array( 'error' => true, 'message' => $e->getMessage() ); return $err; } }// //A partir de aqui puedes crearte metodos para validar la data contenida en el token, como por ejemplo los datos del usuario, dominio de origen, si esta facultado o no para esta app, etc }
Como crearlo con esa clase:
//COMO CREARLO: //Iniciamos la clase $val = new Validar(); //Preparamos los datos a agregar al token //Comno por ejemplo los datos del usuario logueado $data = [ 'usuario' => 'a@a.com', 'dominio' => 'molleja.com', 'nivel' => 'admin', 'apps' => ['app1','app2','app4'] ]; //Generamos el tojen $token = $val->crear($data); //Guardamos el token en una variable de sesion para usarlo donde se requiera $_SESSION['token'] = $token;
Como usarlo:
//COMO USARLO: //Validar y usar el token $datos = $val->_Check($_SESSION['token']); //Si la respuesta es correcta, leemos los datos de esta manera: $usuario = $datos->data->usuario; $dominio = $datos->data->dominio; $nivel = $datos->data->nivel; $apps = $datos->data->apps;
La ventaja de esto es que te permite trabajar tanto dentro de un entorno de dominio único como en uno de dominio múltiple o saltar de un servidor a otro de acuerdo a la configuración que te crees para tal fin, la información que te doy es básica para iniciar, ya tu le agregas todo lo que requieras para adaptarla a tus sistemas.
Saludos. Votos: 0 - Link respuesta -
Fecha: 23-12-2018 12:09:10 Hola Carlos.
Siempre tan amable y preciso lo tuyo, muchas cosas raras para mi en tu respuesta, voy a ponerme a leer al respecto, tu aporte me sirve para tener idea por donde empezar, nuevamente gracias. Luego de mis practicas te mantengo al tanto.
Saludos... Votos: 0 - Link respuesta -
Fecha: 24-12-2018 20:37:12 Hola amigo yo tengo un sistema en linux en el cual desarrolle un sistema de administracion de sistemas (valga la rebundancia) mi sitema cuenta con un DB de 3 tablas la fecha, los sitios y los usuarios. donde defino quien entra y quien no es algo como 192.168.0.4/ automaticamente pide usuario y clave y segun tu rol te muestra los archivos y proyectos que puede usar o ver, pero eso no impide que podamos aceder de la siguiente forma 192.168.0.4/miproyecto/. no se si me comprende. lo que cree fue un simple login en el inicio y en la DB le di privilegios y con una clase PHP exploro todo el contenido de la carpeta /www/ de tal manera que cada vez que creo un proyecto aparece disponible. Votos: 0 - Link respuesta
-
Fecha: 25-12-2018 15:00:46 Buenas Robert.
Gracias por contestar, una buena opción, ya voy a dar por cerrado este post, por las ideas me me aportaron me sirve para encarar una solución a mi necesidad. Hay algo que no logro entender con respecto al modelado de las base de datos, se los dejo por si pueden ayudarme.
Mi idea es tener varios proyectos, en cada uno de ellos hay una tabla de usuarios que los utilizo para login e internamente en algunos casos requiero sus datos.
De esta manera los proyectos en forma individual creo poder desarrollarlo, pero quiero que en vez de que sea redundante el login y el registro de los usuario en cada proyecto hacer algo como esto 1 Bd con los usuarios y el resto de los proyectos cada uno con su base de datos y que hereden o vinculen la base de datos usuarios.
Es posible la herencia o vinculación de tablas cuando son Base de datos distintas ?, utilizo Mysql.
Saludos para todos y gracias por sus aportes? Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
