Netsensei

Much Ado About Nothing

Is OpenID wel zo fantastisch?

Wie wil er nu honderd paswoorden en accounts bijhouden? Niemand toch? Of je gebruikt telkens hetzelfde paswoord. Knappe koppen denken natuurlijk wat verder en kwamen met een oplossing: OpenID. Ideaal, zo leek het. Eén paswoord/login combo onthouden en de rest gebeurt automagisch op elke site die OpenID ondersteunt.

Maar is OpenID wel zo fantastisch? De voornaamste kritiek op OpenID valt samen te vatten als deze: “On the Internet, nobody knows you’re a dog.” Of beter, het decentrale karakter van OpenID betekent verzwakte de sterkte de identiteit die je claimt. Meer hierover vind je hier.

Los van die discussies, heb ik zelf uit harde ervaring geleerd dat OpenID niet het nirvana betekent. Mijn kritiek is eerder technisch van aard en beperkt zich tot het protocol zelf. De laatste maanden heb ik mij gebezigd met een OpenID plugin voor WordPress. Dat betekende dus een OpenID consumer implementeren en die koppelen met één van de API haken van WordPress. Om precies te zijn: in het wp-comments-post.php script. De OpenID specificatie leert ons dat alle oproepen tussen een consumer en een identity provider via HTTP GET requests moeten worden afgehandeld. Helaas hebben de makers van WordPress het bewuste script zo gepatched dat HTTP GET requests worden afgeblokt. Helaas betekent het ook meteen het afblokken van OpenID in comments op een propere manier. Ik kan via allerlei truken de nieuwe beveiliging omzeilen. Maar echt ideaal is dat niet.

Hadden de makers van WordPress die patch moeten doorvoeren? Vanuit het standpunt van beveiliging en anti-spam: zeker. Een script dat HTTP GET requests aanvaardt kan vrij gemakkelijk worden misbruikt. Zeker als het gaat om het dumpen van spam is er geen kunst aan om code te schrijven dat massaal HTTP GET requests afstuurt op onbeveiligde webscripts. Neen. Het probleem ligt in de OpenID specificatie. Die legt juist het gebruik van HTTP GET requests op en laat geen ruimte voor mogelijke alternatieven. In mijn ogen dwingt OpenID dus hier een mogelijk veiligheidsrisico af. Nochtans zijn er andere, betere alternatieven om data over HTTP door te sturen zonder gebruik te maken van de onveilige HTTP GET requests. Ik denk dan aan RPC protocollen zoals XML-RPC (er zit een XML-RPC module in WordPress!) en SOAP.

Persoonlijk sluit ik daarom dus liever mijn OpenID experiment voorlopig af en kijk ik de kat wat uit de boom vooraleer ik er verder mee ga.