De hoofdmoot van remote authentication bevat twee belangrijke protocollen: oAuth en OpenID. In deze trendlab blog zal ik proberen de essentiele verschillen en overeenkomsten tussen de twee aan te geven, alsmede de huidige veranderingen in de protocollen en de mogelijkheden die dat bied.
OpenID vs oAuth
Beide protocollen werken in principe het zelfde, de consumer (in ons geval Mindz.com) stuurt de gebruiker naar een pagina van de provider (bijvoorbeeld Google) alwaar de gebruiker geauthenticeerd wordt, na deze authenticatie wordt de gebruiker teruggestuurd naar de consumer (wederom Mindz.com) met begeleidende informatie die informatie geeft over het wel of niet slagen van de actie.
Het verschil zit vooral in wat er met die gegevens gebeurt, OpenID authenticeerd de gebruiker alleen maar, terwijl oAuth de consumer toegang geeft om iets bij de provider te doen (in het geval van twitter bijvoorbeeld het posten van een tweet).
oAuth & OpenID gecombineerd
De ideale wereld zou beide functies combineren, et presto, Super
Google!
Al rescate! De heren van google zijn op het magische idee (ook wel bekend als de logische volgende stap) gekomen om een api te bouwen die de twee open protocollen combineert. Op deze manier geeft de provider toegang tot (delen van) de gebruikers-data naast dat de gebruiker geauthenticeerd wordt.
Deze api is nog in ontwikkeling, maar de test die bij Plaxo draait om de api te gebruiken werkt al in ruim 92% van de gevallen
Er wordt binnen google zelfs al gewerkt aan een OpenID UI sign-in specificatie, met examples die ervoor zorgen dat de plek voor de provider layout en de consumer layout helder is en daarmee de gebruiker op iedere site die de zelfde structuur gebruikt ook het zelfde idee ziet (wat gebruikers gemak en gebruikers vertrouwen bevordert).
De code van de gecombineerde api inclusief voorbeelden is
hier te vinden. Het grootste nadeel is wel dat het (net als de google appengine en google webkit applicaties) volledig java gebaseerd is.
C# versie
Gezien het idee van Google een logisch vervolg is van de twee bestaande protocollen is er ook een .NET versie beschikbaar,
dotNetOpenID heeft in z'n nieuwste C# library ook oAuth erbij gepakt (en combineert dit met een Ajax control om alles 'smooth' eruit te laten zien). Met die twee gecombineerd in een C# library (die volgens de zelfde methode werken als de google variant, gezien de protocollen standaard en open zijn) kan iedere site die OpenID en/of oAuth ondersteund benaderd worden. Google en Plaxo ondersteunen op het moment zelfs de combinatie van de twee, wat een aantal voordelen levert, bijvoorbeeld bij het importeren van potentiele contacten. Je hebt voor OpenID namelijk al het pad richting iemands google/plaxo/etc account en kunt vervolgens dat zelfde pad gebruiken om iemands google/plaxo/etc. contacts door te nemen om te kijken wie er al binnen Mindz zitten (hoewel hier wel per actie toestemming voor gevraagd moet worden).
Bronnen: