introduction to social login - budapest.net meetup - reiter istván (asp.net mvp)

20
Social Login Bevezetés Reiter István – ASP.NET MVP @ Allwin Kft. https://reiteristvan.wordpress.com [email protected]

Upload: allwininformatika

Post on 25-Jul-2015

303 views

Category:

Technology


2 download

TRANSCRIPT

Social Login Bevezetés

Reiter István – ASP.NET MVP @ Allwin Kft.https://reiteristvan.wordpress.com

[email protected]

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 1.0

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

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