oauth 2.0 a zend framework
DESCRIPTION
OAuth 2.0 - co to je, jak funguje, implicit a authorization code grant, sekvenční diagram, ukázka v Zend Framework.TRANSCRIPT
![Page 2: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/2.jpg)
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
![Page 3: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/3.jpg)
3
OAuth 2.0 – WHO
![Page 4: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/4.jpg)
4
OAuth 2.0 – WHO
![Page 5: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/5.jpg)
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ů
![Page 6: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/6.jpg)
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
![Page 7: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/7.jpg)
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
![Page 8: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/8.jpg)
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
![Page 9: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/9.jpg)
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
![Page 10: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/10.jpg)
10
OAuth 2.0 – jak to funguje
![Page 11: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/11.jpg)
11
OAuth 2.0 – jak to funguje
![Page 12: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/12.jpg)
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
![Page 13: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/13.jpg)
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)
![Page 14: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/14.jpg)
14
2. Autorizační stránka – příklad
![Page 15: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/15.jpg)
15
2. Autorizační stránka – příklad
![Page 16: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/16.jpg)
16
OAuth 2.0 – jak to funguje
![Page 17: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/17.jpg)
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
![Page 18: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/18.jpg)
18
OAuth 2.0 – jak to funguje
![Page 19: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/19.jpg)
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
![Page 20: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/20.jpg)
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
![Page 21: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/21.jpg)
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ší...)
![Page 22: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/22.jpg)
22
Example app
Uka to!github.com/OndraM/oauth2-example
![Page 23: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/23.jpg)
23
Example app
![Page 25: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/25.jpg)
25
Real-world app
![Page 26: OAuth 2.0 a Zend Framework](https://reader031.vdocuments.net/reader031/viewer/2022020116/5565f68cd8b42a2a4d8b469c/html5/thumbnails/26.jpg)
Děkuji za pozornost
Prezentace ke stažení:www.slideshare.net/OndraM
Zdrojáky aplikace:github.com/OndraM/oauth2-example
Twitter:@OndraM