OAuth / kaba Auth adaptor para sa Zend Framework

By Steven Lloyd Watkin , Sabado Abril 23, 2011 15:57

Work patuloy (dahan-dahan) sa aking bagong kaba -based application. Sa susunod na pares ng mga araw ng bakasyon bank Umaasa ako sa kumuha ang momentum pagpunta muli sa proyekto (sa-kabila ng ang kahanga-hangang panahon sa kasalukuyan). Anyway, ang aking susunod na gawain ay upang lumikha ng isang pagpapatunay ng adaptor para sa Zend Framework . Ako ay isang nagtatrabaho login pagpapatupad, ngunit sa pagkakaroon ng isang drop sa Auth adaptor para sa Zend Framework tila tulad ng isang kaakit-akit panukala, kaya ko ginawa ito ....

(Ako hindi ko pagpunta sa pumunta sa pamamagitan ng OAuth o pagrehistro ng iyong aplikasyon sa twitter, may daan-daang mga gabay at ang isang medyo tapat sa papaano mang paraan na proseso.)

Enjoy Consumer confidence

Ang pagkakaiba sa pagitan OAuth at ang iba pang authenication adapters sa Zend Framework ay na OAuth nangangailangan redirect balik sa pagitan ng OAuth provider at ang mga humihiling ng server ng client. Samakatuwid ang proseso ay hindi lubos bilang tuwid forward bilang lang naghahanap up ng ilang mga detalye sa isang database o checking ng header ng kahilingan. Sa kabutihang palad ang Zend Framework sangkap, tulad ng Zend_Oauth_Consumer , kumuha ng marami ng mga sakit sa malayo at ang kanyang lamang ang trabaho ng mga Auth adapter upang gumawa ng mga kinakailangang mga tawag paraan.

Para sa isang gabay sa paggamit Zend_Auth at gumaganap na authentication na may Zend Framework magkaroon ng isang paghahanap sa google, o tingnan ang tutorial na ito sa pamamagitan ng Mateo Weier O'Phinney - Login at Authentication .

Paggamit

Upang magamit ang authentication adaptor na kailangan mo upang pumasa sa dalawang bagay sa pamamagitan ng mga tagapagbuo. Ang una ay isang halimbawa ng Zend_Oauth_Consumer set up para sa iyong OAuth provider. Ako ng paggawa na ito na may kaba's service at maaari mong makita ang isang mabilis na piraso sa na dito - Mag-sign in may kaba gamit Zend Framework . Ako gamit ang aking pagpapatupad kung saan ako magse-set ang "URL Pahintulutan" bilang hindi ko nais user sa ay tatanungin upang magbigay ng pahintulot na ang application sa bawat oras na sila pagtatangka upang mag-login. Ang pangalawang parameter ay isang halimbawa ng Zend_Session_Namespace na instantiated sa namespace sa kung saan nais mong ilagay ang mga detalye ng authentication. Sa aking code mayroon akong isang bagay na tulad ng sumusunod:

  $ Config = array (
     'CallbackUrl' => ... callback-url ...,
     'SITEURL' => 'https: / / twitter.com / OAuth',
     'ConsumerKey' => ... consumer-key ...,
     'ConsumerSecret' => ... lihim-susi ...,
 );
 $ Consumer = bagong Zend_Oauth_Consumer ($ config);
 $ Consumer-> setAuthorizeUrl ('https: / / twitter.com / OAuth / authenticate');
 $ Session = bagong Zend_Session_Namespace (Pro_Auth_Adapter_Twitter:: AUTH_NAMESPACE);
 $ AuthAdapter = bagong Pro_Auth_Adapter_Oauth ($ consumer, $ session); 

Calling ->authenticate() sa adaptor ay pagkatapos ay maging sanhi ng isang pag-redirect sa mga provider OAuth (muli sa aking kaso kaba). Sa pagbabalik sa application ang pangalawang tawag sa ->authenticate() ay talagang gawin ang mga authentication mismo.

Kung ninais ang mga user upang bumalik sa initally hiniling na pahina at pagkatapos ay ibinigay sa iyong katayuan authentication ay naka-check sa bawat kahilingan pagkatapos lamang ng pagtatakda ng parameter ng naaangkop na 'callBackUrl' sa oras ng pagkarga ay makakuha ng ang user sa kanilang orihinal na inilaan destination.

Isa sa huling tampok ko idadagdag ay ang kakayahan upang magpadala ng karagdagang mga parameter gamit ang addParameter() at setParameters() methods. Pagdaragdag ng ang functionality na ito ay nagbibigay-daan sa pagpapadala ng mga karagdagang mga parameter GET kapag ang paggawa ng mga unang redirect sa provider OAuth. Sa aking kaso, ito ay nagpapahintulot sa akin na ipasa ang isang array na may isang key ng 'force_login' at halaga ng tunay na pwersa kaba upang humiling ka ng pag-login uli (kahit na naka-log in) na kung saan ay malaki dahil sa multi-linked-account mga aplikasyon.

Ang code ay magagamit sa aking GitHub repo - OAuth Auth adaptor para sa Zend Framework code (comments welcome!).

Edit: Mukhang may ibang tao ay sa mga kaso rin. Para sa isa pang pagpapatupad mangyaring tingnan http://www.jasonawesome.com/2010/11/24/authenticating-to-twitter-with-zend_auth/

Mag-iwan ng isang Sumagot













Panorama Theme sa pamamagitan ng Themocracy

6 mga bisita sa online ngayon
5 bisita, 1 bots, 0 miyembro
Max mga bisita ngayon: 12 sa 07:57 UTC
Sa buwan na ito: 22 sa 2011/08/06 12:30 UTC
Sa taong ito: 130 sa 28-03-2011 22:40 UTC
Lahat ng oras: 130 sa 28-03-2011 10:40 UTC