Hoi hoi 
Zoals jullie misschien wel weten (die paar lezers van m'n blog
) ben ik bezig met een cross-site inlogsysteem, wat nu op zich wel goed werkt. Bij inloggen hoort ook uitloggen, en daar heb ik een klein probleempje nu...
Als je site A bezoekt en inlogt, en daarna doorgaat naar site B en op iets klikt waarvoor je rechten moet hebben, word je doorverwezen naar de inlogserver die je daarna automatisch inlogt op B. Omdat de sites fysiek gescheiden (kunnen) zijn, is het aanspreken van een centrale database niet mogelijk, ik werk daarom met tokens die via een hidden form naar de website worden verzonden. (Een beetje zoals Live ID het doet)
Goed, inloggen werkt dus goed (al moet m'n code netter, maar dat komt nog)... nu het uitloggen nog. Het is de bedoeling dat een klik op [Log uit] op een website die mijn systeem gebruikt meteen op alle sites uitlogt. Omdat het niet efficiënt is om tegen 101 sites te zeggen "log mij uit zelfs al ben ik niet ingelogd" ga ik een lijstje bijhouden (sessie/cookie) van sites waarop de gebruiker is ingelogd, daarna hoeft alleen voor die sites de uitlogpagina te worden aangeroepen.
Ik wil graag een overzichtspagina kunnen maken, die met vinkjes danwel kruisjes aangeeft of het uitloggen is gelukt of niet. Ik heb een werkend voorbeeld, maar dit werkt op basis van Javascript. Er wordt - dynamisch - een <script> aangemaakt met een src van de uitlogpagina (http://site/auth.php?action=jslogout), die retourneert danwel "taskCompleted();" danwel "taskFailed();", waarna het script (het uitloggen gebeurt als een takenlijst - één voor één wordt de gebruiker uitgelogd).
Dit vind ik echter geen nette oplossing, een site kan immers de auth.php aanpassen en er vervolgens kwaadwillende code inzetten... hetgeen niet wenselijk is. Ik wil niet dat mensen worden gehacked via mijn uitlogpagina... dit moet dus anders. XMLHttpRequest zou ideaal zijn... als dat geen cross-domain-beperkingen zou kennen...
Maar hoe? Als ik kijk hoe Microsoft het oplost (met hun "Windows Live ID web authentication"-gedoe) is het relatief simpel... als het uitloggen gelukt is wordt er een null-gifje verstuurd naar de gebruiker en toont Live ID een vinkje, als het uitloggen mislukt wordt er niks verzonden en wordt er een kruisje getoond... maar hoe krijg ik dat voor elkaar op mijn eigen systeem... hoe bepaal ik welk plaatje (kruisje/vinkje) getoond moet worden? Ik kan de site zelf die plaatjes laten verzenden, maar dan kan er een goatse of tubgirl tussenkomen en dat wil ik ook niet.
Heeft iemand hier misschien een beter/ander idee om dat uitloggen aan te pakken?
Zoals jullie misschien wel weten (die paar lezers van m'n blog
Als je site A bezoekt en inlogt, en daarna doorgaat naar site B en op iets klikt waarvoor je rechten moet hebben, word je doorverwezen naar de inlogserver die je daarna automatisch inlogt op B. Omdat de sites fysiek gescheiden (kunnen) zijn, is het aanspreken van een centrale database niet mogelijk, ik werk daarom met tokens die via een hidden form naar de website worden verzonden. (Een beetje zoals Live ID het doet)
Goed, inloggen werkt dus goed (al moet m'n code netter, maar dat komt nog)... nu het uitloggen nog. Het is de bedoeling dat een klik op [Log uit] op een website die mijn systeem gebruikt meteen op alle sites uitlogt. Omdat het niet efficiënt is om tegen 101 sites te zeggen "log mij uit zelfs al ben ik niet ingelogd" ga ik een lijstje bijhouden (sessie/cookie) van sites waarop de gebruiker is ingelogd, daarna hoeft alleen voor die sites de uitlogpagina te worden aangeroepen.
Ik wil graag een overzichtspagina kunnen maken, die met vinkjes danwel kruisjes aangeeft of het uitloggen is gelukt of niet. Ik heb een werkend voorbeeld, maar dit werkt op basis van Javascript. Er wordt - dynamisch - een <script> aangemaakt met een src van de uitlogpagina (http://site/auth.php?action=jslogout), die retourneert danwel "taskCompleted();" danwel "taskFailed();", waarna het script (het uitloggen gebeurt als een takenlijst - één voor één wordt de gebruiker uitgelogd).
Dit vind ik echter geen nette oplossing, een site kan immers de auth.php aanpassen en er vervolgens kwaadwillende code inzetten... hetgeen niet wenselijk is. Ik wil niet dat mensen worden gehacked via mijn uitlogpagina... dit moet dus anders. XMLHttpRequest zou ideaal zijn... als dat geen cross-domain-beperkingen zou kennen...
Maar hoe? Als ik kijk hoe Microsoft het oplost (met hun "Windows Live ID web authentication"-gedoe) is het relatief simpel... als het uitloggen gelukt is wordt er een null-gifje verstuurd naar de gebruiker en toont Live ID een vinkje, als het uitloggen mislukt wordt er niks verzonden en wordt er een kruisje getoond... maar hoe krijg ik dat voor elkaar op mijn eigen systeem... hoe bepaal ik welk plaatje (kruisje/vinkje) getoond moet worden? Ik kan de site zelf die plaatjes laten verzenden, maar dan kan er een goatse of tubgirl tussenkomen en dat wil ik ook niet.
Heeft iemand hier misschien een beter/ander idee om dat uitloggen aan te pakken?
We are shaping the future