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?
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?