introduction to social login - budapest.net meetup - reiter istván (asp.net mvp)
TRANSCRIPT
Social Login Bevezetés
Reiter István – ASP.NET MVP @ Allwin Kft.https://reiteristvan.wordpress.com
Mi az az OAuth?
• Online identitás …• LiveId• Google account• Twitter
• … Mindenkinek van• Használjuk!
Sötét középkor
• Felhasználónév/jelszó• 3rd party alkalmazások mindenhez hozzáférnek• Nem lehet visszavonni egyszerűen• Ha az alkalmazás borul …
Megoldás?
• Szolgáltatások felismerték a problémát …• … És saját megoldásokat készítettek …• … Persze minden kicsit különbözött mindentől
Megoldás?
• 2006 – Twitter OpenID• Kell egy olyan API amivel az authentikáció kidelegálható• 2007 – OAuth vitafórum• 2010 – OAuth 1.0• Csak böngésző, mobil eszközöket nem támogat
OAuth 1.0
• Hash-based message authentication (HMAC)• POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses
%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521
OAuth 2.0
• Lényegesen egyszerűbb• HMAC -----> HTTPS• Visszafelé NEM kompatibilis• Kik használják?• Facebook• Google• Microsoft• Twitter• … és még sokan mások
OAuth 2.0 – Hol?
• Nem korlátoz böngészőre:• Server-side (“hagyományos”)• Client-side (JavaScript, Flash)• Native (mobil alkalmazások)
OAuth 2.0 - Résztvevők
• Resource owner: a felhasználó• Resource server: az API• Authorization server: tokeneket oszt• Client: 3rd party• Scope (nem egységes)
OAuth 2.0 - Provider
• Alkalmazásoknak regisztrálniuk kell a provider-nél• Url, redirect url• Cserében kapjuk: • API key: client_id• client secret: elcserélhető access token-re
OAuth 2.0 - Flow
• A felhasználó használni szeretné az alkalmazásunkat• https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}
• Opcionális paraméterek:• State: CSRF (elsődlegesen, de nem erre lett kitalálva)• Response type: code (URL parameter), token (URL fragment), code%20token• Scope
• HTTP GET• HTTP 302 + Location
OAuth 2.0 - Flow
• Authorization code és state a válaszban• … akárcsak a hibaüzenetek
• responsetype=• code: becseréljük egy access token-re• token: ellenőrizzük (inspection endpoint)• code%20token: választhatunk
• Access token (GET és POST is lehetséges):• https://graph.facebook.com/oauth/access_token? client_id={app-id} &redirect_uri={redirect-uri} &client_secret={app-secret} &code={code-parameter}
OAuth 2.0
• Elég ha birtokunkban van• Nincs szükség más kulcsra• HTTP Authorization header• Ritkán van cache vagy log róla
• Query string vagy form formában is használható, ha a provider engedélyezi
Bearer Token
OAuth 2.0
GET /calendar/v3/calendars/{calendarId}/acl/{ruleId} HTTP/1.1Host: www.googleapis.comContent-length: 0Authorization: Bearer ya29.AHES6ZQCRVE_xAGxv1sBcOuasPaRW6CpSLRd_FTSUXWK2q5iQ_BJDg
OAuth 2.0
• Refresh token: access token mellett érkezhet• …de Facebook nem ad ilyet
• Új access token-t kérhetünk vele, ha a régi lejárt• A szabvány nem ad iránymutatást...
• grant_type=refresh_token&refresh_token=SplxlOBeZQQYbYS6
OAuth 2.0 - Problémák
• SSL/TLS: alapos ellenőrzést kíván• Message Authentication Code (MAC)
• A megvalósítások különböznek, a szabvány csak ajánlásokat ad• Threat model
• Bejelentkező oldal testreszabása nem lehetséges vagy korlátozott
Köszönöm a figyelmet!
• Kérdések?• Olvasnivaló• https://dev.twitter.com/docs/auth/creating-signature• https://developers.facebook.com/docs/facebook-login/manually-build-a-login
-flow/• https://tools.ietf.org/html/rfc6819• http://
blog.astrumfutura.com/2010/10/do-cryptographic-signatures-beat-ssltls-in-oauth-2-0/• https://hueniverse.com/2012/07/oauth-2-0-and-the-road-to-hell/