Advertisement
Advertisement

More Related Content

Advertisement

OAuth 2.0 a Zend Framework

  1. OAuth 2.0 #ZFMeetup, 9. únor 2012 Ondřej Machulda ondrej.machulda@gmail.com http://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 2
  3. OAuth 2.0 – WHO 3
  4. OAuth 2.0 – WHO 4
  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ů 5
  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 6
  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 7
  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 8
  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 9
  10. OAuth 2.0 – jak to funguje 10
  11. OAuth 2.0 – jak to funguje 11
  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 12
  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) 13
  14. 2. Autorizační stránka – příklad 14
  15. 2. Autorizační stránka – příklad 15
  16. OAuth 2.0 – jak to funguje 16
  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 17
  18. OAuth 2.0 – jak to funguje 18
  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 19
  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 20
  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ší...) 21
  22. Example app Uka to! github.com/OndraM/oauth2-example 22
  23. Example app 23
  24. Real-world app Wanna more! 24
  25. Real-world app 25
  26. Děkuji za pozornost Prezentace ke stažení: www.slideshare.net/OndraM Zdrojáky aplikace: github.com/OndraM/oauth2-example Twitter: @OndraM
Advertisement