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

Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

Jul 25, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

Social Login Bevezetés

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

[email protected]

Page 2: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

Mi az az OAuth?

• Online identitás …• LiveId• Google account• Twitter

• … Mindenkinek van• Használjuk!

Page 3: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)
Page 4: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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 …

Page 5: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 6: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 7: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 8: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

OAuth 1.0

Page 9: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 10: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

OAuth 2.0 – Hol?

• Nem korlátoz böngészőre:• Server-side (“hagyományos”)• Client-side (JavaScript, Flash)• Native (mobil alkalmazások)

Page 11: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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)

Page 12: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 13: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

OAuth 2.0

Page 14: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 15: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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}

Page 16: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 17: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

OAuth 2.0

GET /calendar/v3/calendars/{calendarId}/acl/{ruleId} HTTP/1.1Host: www.googleapis.comContent-length: 0Authorization: Bearer ya29.AHES6ZQCRVE_xAGxv1sBcOuasPaRW6CpSLRd_FTSUXWK2q5iQ_BJDg

Page 18: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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

Page 19: Introduction to social login - budapest.NET meetup - Reiter István (ASP.NET MVP)

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