OAuth 2.0 a Zend Framework

Post on 27-May-2015

2,548 views 3 download

description

OAuth 2.0 - co to je, jak funguje, implicit a authorization code grant, sekvenční diagram, ukázka v Zend Framework.

transcript

OAuth 2.0

#ZFMeetup, 9. únor 2012Ondřej Machuldaondrej.machulda@gmail.comhttp://o.vlastovka.eu @OndraM

2

OAuth – WTF

● Open Authorization● „Otevřený standard pro autorizaci“● Autorizace vs. autentizace

– autentizace – kdo jsem (identita)– autorizace – co můžu (přístup k prostředkům)

● Sdílení dat mezi službami (API)● Vznik nedávno (1.0 v roce 2006/7)● OAuth 2.0, draft #23● Zend_Oauth

3

OAuth 2.0 – WHO

4

OAuth 2.0 – WHO

5

OAuth 2.0 - možnosti

● Client side („Implicit grant“)● Zjednodušené, pro client-only aplikace (AJAX)

● Server side („ Authorization Code Grant“)● Consumer (client)

– naše app, chce data uživatele uložena u providera● Uživatel

– má data u providera, chce povolit přístup k nim consumerovi

● Provider (resource server)– poskytuje API pro přístup k datům uživatelů

6

OAuth 2.0 – jak na to

● Registrace „OAuth consumera“ u providera● callback url● client_id, client_secret● captcha

● Např.:– https://developers.facebook.com/apps– https://foursquare.com/oauth/register– https://dev.twitter.com/apps/new

7

OAuth 2.0 – jak na to

● Registrace „OAuth consumera“ u providera● callback url● client_id, client_secret● captcha

● Např.:– https://developers.facebook.com/apps– https://foursquare.com/oauth/register– https://dev.twitter.com/apps/new

8

OAuth 2.0 – jak na to

● Registrace „OAuth consumera“ u providera● callback url● client_id, client_secret● captcha

● Např.:– https://developers.facebook.com/apps– https://foursquare.com/oauth/register– https://dev.twitter.com/apps/new

9

OAuth 2.0 – jak na to

● Registrace „OAuth consumera“ u providera● callback url● client_id, client_secret● captcha

● Např.:– https://developers.facebook.com/apps– https://foursquare.com/oauth/register– https://dev.twitter.com/apps/new

10

OAuth 2.0 – jak to funguje

11

OAuth 2.0 – jak to funguje

12

1. Žádost o autorizaci na autorizačním URL

● https://www.facebook.com/dialog/oauth?● response_type = code

● client_id = přidělené CLIENT_ID● redirect_uri = http://naše.callback/url/● scope = k čemu chceme o přístup● state = XSRF

● https://www.facebook.com/dialog/oauth?client_id=(...)&response_type=code&redirect_uri=http%3A%2F%2Foauth2.local%2Ffacebook%2Fcallback&scope=user_about_me%2Cuser_photos%2Coffline_access

13

2. Autorizační stránka

● Nejprve autentizace uživatele – pokud není již přihlášen

● Pak autorizace – povolí přístup k datům dle scope

● Může také rovnou přesměrovat (není to ale ve specifikaci)

14

2. Autorizační stránka – příklad

15

2. Autorizační stránka – příklad

16

OAuth 2.0 – jak to funguje

17

4. Přesměrování na redirect_uri

● Při chybě (uživatel odmítne aj.)● http://redirect.uri?error=REASON

● Při potvrzení● http://redirect.uri?

– code = kód, na jehož základě získáme token (další krok)– state = XSRF

18

OAuth 2.0 – jak to funguje

19

5. Access token request

● Provede naše aplikace asynchronně● HTTP POST*● https://graph.facebook.com/oauth/access_token

● client_id

● client_secret – není odhaleno uživateli● redirect_uri – musí být stejné jako v kroku 1.● code – viz předchozí krok

20

6. Access token, woot!

● Když vše souhlasí, vrátí nám provider token● Bordel ve formátech: query string, JSON...● {

"access_token":"2YotnFZFEjr1zCsicMWpAA",

"expires_in":3600,

"refresh_token":"tGzv3JOkF0XG5Qx2TlKW"

}

● Token uložíme – session, databáze

21

7. Zobrazení potvrzení

● Zobrazíme uživateli, že je přihlášen● S tokenem (= přístupový klíč) už můžeme dělat

požadavky do API providera (než vyprší...)

22

Example app

Uka to!github.com/OndraM/oauth2-example

23

Example app

24

Real-world app

Wanna more!

25

Real-world app

Děkuji za pozornost

Prezentace ke stažení:www.slideshare.net/OndraM

Zdrojáky aplikace:github.com/OndraM/oauth2-example

Twitter:@OndraM