• Viernes 19 de Abril de 2024, 15:24

Autor Tema:  Validacion De Usuarios Por Conexión Ojb  (Leído 2244 veces)

krusen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Validacion De Usuarios Por Conexión Ojb
« en: Jueves 7 de Octubre de 2004, 13:50 »
0
Estoy trabajando en un sistema y la validación de acceso hay que realizarla con los usuarios de la base de datos, es decir no hay una tabla de usuarios, sino simplemente conectar con el nombre de usuario y contraseña, si la conexión es correcta se valida su acceso y si no pues fuera...

El problema es que estoy utilizando el OJB (ObjectRelationalBridge de Apache) para realizar la conexión y no puedo (creo yo) realizar una conexión directa jdbc para comprobar la conexión.

La solución que he encontrado pasa por crearme un repository en tiempo de ejecución con los datos de usuario y contraseña, algo tal que:

-------------------
...................

ConnectionRepository cr = MetadataManager.getInstance().connectionRepository();
     
JdbcConnectionDescriptor jcdOriginal = cr.getDescriptor(cr.getStandardPBKeyForJcdAlias("micadenadefault"));
     
JdbcConnectionDescriptor jcd = new JdbcConnectionDescriptor();
     
jcd.setJcdAlias("Usuario_"+usuario);
jcd.setUserName(usuario);
jcd.setPassWord(clave);
jcd.setDbms(jcdOriginal.getDbms());
jcd.setJdbcLevel(jcdOriginal.getJdbcLevel());
jcd.setDriver(jcdOriginal.getDriver());
jcd.setProtocol(jcdOriginal.getProtocol());
jcd.setSubProtocol(jcdOriginal.getSubProtocol());

System.out.println("******************Set con los get del descriptor original****************");
     
cr.addDescriptor(jcd);

     
PBKey pasoKey = new PBKey("Usuario_"+usuario, usuario, clave);
     
PersistenceBroker broker = PersistenceBrokerFactory.createPersistenceBroker(pasoKey);

........................
------------------------------------------


Esto parece que funciona, por las lineas de DEBUG he visto que crea el nuevo descriptor (aunque no da ningun error si el usuario y la contraseña estan mal), entiendo que he de hacer un query para poder ver que el usuario y contraseña son correctos.

Mi pregunta es: ¿Hay alguna manera más facil?

No me valen las siguientes respuestas:
- create una tabla de usuarios/contraseñas (Descartado por politica de seguridad del cliente)
- Haz una conexión directa con JDBC (Quiero hacerlo con el Ojb)

Saludos y gracias por vuestro tiempo

 :comp:

krusen

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Validacion De Usuarios Por Conexión Ojb
« Respuesta #1 en: Viernes 8 de Octubre de 2004, 11:26 »
0
Incluyo la solución que he encontrado por si le puede interesar a alguien:

-------------------------------------

boolean boolRetorno;
ConnectionRepository cr = MetadataManager.getInstance().connectionRepository();
     
JdbcConnectionDescriptor jcdOriginal = cr.getDescriptor(cr.getStandardPBKeyForJcdAlias("MiConexionDefault"));
     
JdbcConnectionDescriptor jcd = new JdbcConnectionDescriptor();
     
jcd.setJcdAlias("Usuario_"+usuario);
jcd.setUserName(usuario);
jcd.setPassWord(clave);
jcd.setDbms(jcdOriginal.getDbms());
jcd.setJdbcLevel(jcdOriginal.getJdbcLevel());
jcd.setDriver(jcdOriginal.getDriver());
jcd.setProtocol(jcdOriginal.getProtocol());
jcd.setSubProtocol(jcdOriginal.getSubProtocol());
jcd.setDbAlias(jcdOriginal.getDbAlias());
     
jcd.setConnectionPoolDescriptor(jcdOriginal.getConnectionPoolDescriptor());

cr.addDescriptor(jcd);
     
PBKey pasoKey = new PBKey("Usuario_"+usuario, usuario, clave);
     
PersistenceBroker broker = PersistenceBrokerFactory.createPersistenceBroker(pasoKey);

try {
         broker.beginTransaction();
         boolRetorno = true;
} catch (Exception e) {
         boolRetorno = false;
} finally {
         cr.removeDescriptor(jcd);
         if (broker!=null) broker.close();
}

     
this.validado = boolRetorno;
return(boolRetorno);


----------------------------------------------

Si teneis otra solucion seria bueno que la postearais.

Saludos

 :comp:

nicokiki

  • Miembro MUY activo
  • ***
  • Mensajes: 298
    • Ver Perfil
Re: Validacion De Usuarios Por Conexión Ojb
« Respuesta #2 en: Viernes 8 de Octubre de 2004, 16:50 »
0
Hola!!!!!!!

Antes q nada aclaro q pediste q nadie te responda lo q yo te voy a escribir, pero es inevitable q lo haga.
Vos crees q esta bien intentar abriri y cerrar conexiones a la BD cada vez q un usuario quiera hacer algo en ella??? A mi no me parece muy bien y a parte va contra un diseño mas o menos logico de SEGURIDAD-PERMISOS-ROLES-etc. Por lo tanto, deberias hacer esas tablas aunque no te guste q alguien te lo responda debido a q tu diseño no es bueno debido a una futura escalabilidad de la cosa y muchisimas politicas de seguridad. Otro tema, si el usuario usa la contraseña de acceso a la BD, quien le prohibe q abra la BD manualmente sin ningun tipo de restriccion y no a traves de aplicacion.
Insisto, deberias perder un tiempito en hacer un diseño por el estilo y cambiar eso. Ojo, quizas lo estas haciendo asi porque es realmente necesario q lo hagas de esa manera aunque de todas formas no me parece logico

Salu2!!!!!!!