Inleiding:
Ik moet nu aan een site gaan werken waarin een single sign-on principe aangebracht moet worden. Het wordt een portal met verschillende portlets die op verschillende sites en fysiek verschillende servers moeten kunnen staan. We gaan een centrale webservice maken die puur zorgt voor authenticatie (dus niet authorisatie!) van de gebruiker, dus eigenlijk alleen een lijstje van username/password/userid.
Een portal?
Kort door de bocht dat is een website die bestaat uit meer dan 1 onderdeel, waarbij de onderdelen (portlets) niet per se van dezelfde website hoeven te komen. Hier wordt communicatie tussen portal en portlet dus een probleem.
Single sign-on?
Het is de manier om te voorkomen dat gebruikers overal moeten inloggen waar een service maar authenticatie nodig heeft. Single sign-on moet er dus voor zorgen dat de portal aan de portlets duidelijk kan maken wie de bezoeker is, en de portlet moet dat kunnen verifiëren.
Wat heb ik zelf al bedacht:
De portal zou bij het openen van een portlet een username en wachtwoord aan de URL van de portlet versleuteld kunnen toevoegen. Dit vereist echter een public key encryption en is dus een eventueel beveiligingsgat. Dit is echter wel wat veiliger dan een userid meesturen, omdat het met bovenstaande idee de portlet is, die de userid van de authorisatie-webservice opvraagt.
Cookies behoort ook tot de mogelijkheden, maar zijn wederom een potentiëel beveiligingsgat. Met dat ik niet zeker weet of het ene domein een cookie kan krijgen van het andere domein.
E.e.a. zou nog dichtgetimmerd kunnen worden met een MD5-hash (of iets dergelijks), om het de cracker nog moeilijker te maken, maar feit blijft dat de portlet de login-informatie moet kunnen ontcijferen, en dat kan een cracker dan dus ook als hij de code weet.
Ook is gegeven dat de portlets niet per se de moderne communicatie ondersteunen die we hedendaags kennen. Het meeste dat we van ze eisen, is dat dat ze een webservice kunnen aanspreken (en dat is simpel). We kunnen dus bijv niet de portlet als webservice aanspreken en zeggen "hier komt bezoeker die-en-die", of zoiets.
Wat kunnen we hierop verzinnen?
Ik moet nu aan een site gaan werken waarin een single sign-on principe aangebracht moet worden. Het wordt een portal met verschillende portlets die op verschillende sites en fysiek verschillende servers moeten kunnen staan. We gaan een centrale webservice maken die puur zorgt voor authenticatie (dus niet authorisatie!) van de gebruiker, dus eigenlijk alleen een lijstje van username/password/userid.
Kort door de bocht dat is een website die bestaat uit meer dan 1 onderdeel, waarbij de onderdelen (portlets) niet per se van dezelfde website hoeven te komen. Hier wordt communicatie tussen portal en portlet dus een probleem.
Het is de manier om te voorkomen dat gebruikers overal moeten inloggen waar een service maar authenticatie nodig heeft. Single sign-on moet er dus voor zorgen dat de portal aan de portlets duidelijk kan maken wie de bezoeker is, en de portlet moet dat kunnen verifiëren.
Wat heb ik zelf al bedacht:
De portal zou bij het openen van een portlet een username en wachtwoord aan de URL van de portlet versleuteld kunnen toevoegen. Dit vereist echter een public key encryption en is dus een eventueel beveiligingsgat. Dit is echter wel wat veiliger dan een userid meesturen, omdat het met bovenstaande idee de portlet is, die de userid van de authorisatie-webservice opvraagt.
Cookies behoort ook tot de mogelijkheden, maar zijn wederom een potentiëel beveiligingsgat. Met dat ik niet zeker weet of het ene domein een cookie kan krijgen van het andere domein.
E.e.a. zou nog dichtgetimmerd kunnen worden met een MD5-hash (of iets dergelijks), om het de cracker nog moeilijker te maken, maar feit blijft dat de portlet de login-informatie moet kunnen ontcijferen, en dat kan een cracker dan dus ook als hij de code weet.
Ook is gegeven dat de portlets niet per se de moderne communicatie ondersteunen die we hedendaags kennen. Het meeste dat we van ze eisen, is dat dat ze een webservice kunnen aanspreken (en dat is simpel). We kunnen dus bijv niet de portlet als webservice aanspreken en zeggen "hier komt bezoeker die-en-die", of zoiets.
Wat kunnen we hierop verzinnen?
日本!🎌