Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OAuth 2.0 a Zend Framework

3,323 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

OAuth 2.0 a Zend Framework

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

×