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