02. december 2007 - 18:07Der er
35 kommentarer og 1 løsning
Java: RMI
Jeg er ved at skrive et system, hvor jeg indtil videre har brugt RMI til at sende mySQL-connection fra server til klient. Det skulle gerne være sådan, at man fra klienten kan logge ind på serveren, med et brugernavn/password som er opbevaret på serveren - som den kan trække ud fra en mySQL-database.
Hvordan kan jeg kan skrue dette login system sammen? Skal lade serveren sende et objekt med brugernavn/password til klienten, og så den finde ud af, om indtastet brugernavn/password er i objektet fra serveren? Umiddelbart lyder det ikke som en sikker løsning.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Behold brugernavn og connection på serveren, og skriv og eksponer metoder der henter og gemmer data: HentAlleHunde(). Klienten kalder HentAlleHunde(), serveren håndterer alt med databasen.
Kan jeg ikke lave noget i stil med: ResultSet row = ((MySQL) Naming.lookup("rmi://localhost/totalizator/MySQL")).query("SELECT * FROM customers");
..eller den vil måske stadig først kalde query på klienten? Hvordan kan man med RMI gemme data på serveren? Med overstående Naming.lookup henter jeg et objekt ned..men hvordan kan man gemme data på serveren?
Umiddelbart vil jeg synes, at det vil være ekstremt kostbart at skulle lave metoder til at hente data for samtlige mySQL-kald mit program skal kunne kalde. Derfor vil det måske være smart bare at hente et Objekt fra serveren med login til mySQL-serveren og så oprette Connection til mySQL på klienten med de login-data som kommer fra serveren.
Jeg synes stadig ikke, jeg har fået et svar på, hvordan man kan bruge dette til at håndtere bruger-login? Jeg foreslog at man kunne få et objekt fra serveren med samtlige brugernavne/password og så matche dette objekt med det brugern indtaster ved login - men det lyder som en dårlig og usikker løsning. Hvad vil I foreslå?
Jo, men det kan du jo ikke rent teknisk. Du har også selv nævnt problemet med sikkerhed, både mht brugernavn og pw, men også mht at lade mysql-serveren være åben for alle og enhver.
Og i forvejen bør du jo lave et "Data Access Lag", med den slags metoder, så du adskiller databasen fra applikationen.
Så du mener altså, at det med at hente et Objekt fra serveren med login til mySQL-serveren og så oprette Connection til mySQL på klienten med de login-data som kommer fra serveren, ville være en god ide?
Eller, ok. Hvis du kun henter brugernavn og password, og derefter opretter forbindelsen fra din applikation, ja, så kan det gøres. Med sikkerhed vil være en by i Rusland.
Fint, det var det sidste jeg mente. Ved godt jeg har spurgt før, men har ikke forstået svaret: hvis det er en by i Rusland at gøre det på den måde, hvad vil du så anbefale?
Det er skrevet før: hold al det med databasen på serveren. Klient og server udveksler så blot almindelige objekter - du skal finde på passende metoder.
Der kan jeg kun finde én måde fra klienten at komme i kontakt med serveren, nemlig noget i stil med: KontoI k =(KontoI) Naming.lookup("rmi://localhost/kontotjeneste"); Hvordan vil du her have, at jeg kan give parametre med?
Men dette kan ikke bruges til en mySQL-connection? Hvis jeg laver en mySQl connection i en klasse kaldet MySQL og henter den ned på klienten - kan jeg så kalde insert, query mm. uden at det driller?
Jeg har et lille problem.. På min lokale maskine forsøger jeg at kontakte serveren på IP'en, nemlig 192.168.1.34 - der går den fint igennem. Men på min anden client, som ikke er den samme maskine som serveren, kan jeg ikke komme igennem. Hvis jeg prøver at indtaste 192.168.1.34 i browseren kommer jeg igennem til apache-serveren, så der er hul den vej igennem. Server er en Ubuntu Linux.
Jeg tror ikke det er problemet. For hvis jeg bytter, så det er min Windows XP der står som server og min Linux maskine som står som client, så virker det fint!
Jeg tror umiddelbart ikke problemet er, at porten er lukket - for jeg får jo svar med telnet på porten 1099. Har I nogle ideer?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.