[Java][JAAS] Authentication op Server of Client

Pagina: 1
Acties:

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-04 12:40
Na de eerste stappen te hebben gezet om met JAAS aan de gang te zijn, kom ik nu bij de keuze uit of ik de werkelijke authenticatie op de client of de server moet draaien.
Eerst zal ik even de situatie uitleggen:

De User/Role informatie zit op geslagen in een rdbms. Deze RDBMS mag in princiepe alleen door de container aangesproken worden en de database server accepteerd alleen verbindingen die door de applicatie server gemaakt wordt. Hierdoor vallen alle ClientLoginModulen die direct met JDBC praten af.

Ik heb vervolgens implementatie geschrven van een ClientLoginModule die tegen een sessionbean de gebruiker authenticate, maar daarbij moest ik weer een cutom callbackhandler schrijven waarmee ook de serverURL gevraagd wordt. Dit zou in princiepe allemaal moeten werken, maar er zijn toch een paar behoorlijke nadelen:
- Module UserManagement.JAR moet buiten de security realm gezet worden
- Authenticatie op de Client -> Subject wordt via de Initial Context naar de server verplaatst. hierdoor is het misschien lastiger om andere soorten clients (web interface, webDAV, andere servers) met de server te laten praten)
- Eigen Callback implementatie nodig. (zoals het pasen van een serverUrl)

Ik zit er ook aan te denken om de standaard org.jboss.security.ClientLoginModule te gebruiken voor de swing clients. deze authentiseerd de gebruiker niet tegen de database, maar verpakt de username en password in een Subject wat naar de server wordt gestuurd via de InitialContext.
Vervolgens kan ik op de server de authenticatie gaan uitvoeren.
Het grote voordeel hiervan is, is dat de server de authenticatie uitvoert en ik ook geen lastige custom callbacks hoef te implementeren.

Hoofdzakelijk maakt de applicatie alleen gebruik van Swing clietns en een paar servlets om bestanden te versturen/ontvangen (die worden uitsluitend door de swing clients aangesproken)
Deze servlets draaien ook op dezelfde server, en de gebruiker moet ook worden geauthenticiteerd worden tegen de user/role management.In de toekomst zal er misschien ook geauthenticeerd moeten worden tegenover een LDAP service. (vandaar JAAS, omdat de login module @ runtime gekoppeld kan worden)

Op welke plaats is het nu het beste op de werkelijk authenticatie method te zetten?

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Over welke container hebben we het hier? OC4J, Weblogic, Websphere, JBoss ??
Zit er bij de container standaard al niet een implementatie voor Jaas m.b.v. de database (bij JBoss is deze namelijk standaard aanwezig)

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-04 12:40
Ik gebruik JBoss, maar de database verschilt per site waar de applicatie draait. Hier gebruiken we Oracle10g, maar op andere sites gebruiken ze ook postgres. Tevens worden de database tabellen door de container gemaakt. (tabel user wordt automatisch omgezet naar xuser door jboss). Daarom ben ik een beetje huiverig om met JDBC de authenticatie uit te voeren en wil alleen via de container de database aanspreken.

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Dat de table user omgezet wordt naar xuser komt omdat het woordje user een reserved keyword is. Je kan mischien zelf via een tool wel zo'n tabel aanmaken maar dat laat JBoss niet toe.

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line