Date post: | 27-May-2015 |
Category: |
Technology |
Upload: | ondrej-machulda |
View: | 2,548 times |
Download: | 3 times |
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
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