Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Oauth vs open id
1. Oauth vs OpenId
• Oauth • OpenId
Introducere Introducere
Functionalitate Functionalitate
Concluzie Concluzie
Oauth vs OpenId
2. Oauth: Introducere
Oauth a fost initiat in 2006 de catre Blaine Cook, care avea nevoie ca userii cu
OpenId sa poata autoriza Dashboard Widgets pentru a accesa serviciul lor de la
twitter.
In timp a fost dezvoltat si standardizat de cei de la Google. Tot in timp au fost
dezvoltate versiuni din ce in ce mai noi, incepand cu oauth 1.0a si terminand cu
oauth 2.0 .
Oauth este un protocol standart de autorizare, care permite utilizatorilor sa
isi poata arata resursele private pe care le au pe un anume site fara sa fie nevoiti sa
isi dezvaluie numele si parola.
Acest protocol utilizeaza tokens pentru a inlocui numele si parola si are ca
scop autorizarea celei de a treia parti pentru a vedea datele private ale unui user
fara ca userul sa isi ofere numele si parola pe care le are .
Acest protocol este folosit pentru autorizare in principal de serviciile web
(exemplu: Facebook, Twitter, Google, etc) pentru a autoriza cea de a treia parte sa
aiba acces la datele gazduite de acestia pentru un anumit user.
3. Oauth: Functionalitate
• In oauth este vorba de trei parti:
User care detine date gazduite de un anume
serviciu si doreste sa autorizeze o anume
aplicatie sa poata accesa datale sale gazduite
pe acel serviciu;
Serviciu web este locul unde userul are
gazduite anumite date;
Consumer este cea de a treia parte pe care
userul vrea sa o autorizeze;
5. Oauth: Functionalitate
• In aceasta comunicare dintre user, consumer,
si service provider are trei parti:
Partea in care consumer face o cerere la
service provider pentru un request token;
Partea in care consumer il redirecteaza la
service provider pe user pentru a il autoriza;
Partea in care consumer face schimbul unui
request token pentru un access token
6. Oauth: Functionalitate
• Intai ca consumer avem nevoie de un consumer
key pe care il obtinem inregistrand aplicatia
noastra la service provider.
• Acum putem face cererea la service provider
pentru un request token.
• In aceasta cerere parametri pot fi trimisi in trei
moduri:
-ca http authorization header
-ca http post
-ca parte de url
7. Oauth: Functionalitate
• Acum descriem protocolul Oauth 1.0 pentru
cazul youtube(care face cu google):
• Trebuie sa mentionam ca google suporta RSA-
SHA1 si HMAC-SHA1 ca protocoale de
semnare sau putem sa avem plaintext in cas
ca folosim un canal SSL.
• Dupa cum spuneam ca prim pas avem nevoie
de request token si cererea arata in felul
urmator:
9. Oauth: Functionalitate
• Parametri sunt trimisi prin post din acesta cauza avem
urlencoded.
• Consumer-key este cheia oferita de google in urma
inregistrarii aplicatiei (aceasta cheie o vom folosi in
fiecare cerere de acum incolo).
• Signature-method este tipul de semnatura, unul din
cele doua enumerate adineaori.
• Signature este semnatura acestui request folosind
metoda specificata mai sus. Fiecare parametru este
semnat in felul urmator:sunt sortati dupa nume iar
daca numele e egal sunt sortati dupa valoare, numele e
separat de valoare prin =, iar parametri intre ei prin &.
10. Oauth: Functionalitate
• Timestamp specifica timpul cand a fost trimis
acest request( numarul de secunde dupa 1
Ianuarie, 1970 00:00:00 GMT);
• Nonce este un random 64 bit numar encodat
ca ascii in forma decimala si este unic la fel ca
timestamp;
• Version este versiunea utilizata de oauth care
poate fi 1.0 sau 2.0;
• Scope este serviciul pe care il apelezi.
11. Oauth: Functionalitate
• Daca cererea s-a efectuat cu succes raspunsul
arata in felul urmator:
oauth_token=ab3cd9j4ks73hf7g&oauth_token_s
ecret=ZXhhbXBsZS5jb20
• Acum putem trece la autorizarea pentru request
token:
• https://www.google.com/accounts/OAuthAuthor
izeToken?oauth_token=ab3cd9j4ks73hf7g&oauth
_callback=http%3A%2F%2Fwww.example.com
12. Oauth: Functionalitate
• Acest url la care il redirectam pe user contine 2 parametri
tokenul primit si callback care este url-ul unde userul va fi
redirectat in caz ca acesta autorizeaza accesul.
• Acum userul este redirectat la youtube pe pagina de login
in caz ca nu este deja logat si dupa ce se logheaza ii va
aparea o fereastra in care este intrebat daca permite
accesul aplicatiei noastre la datele sale si care este nivelul
de acces, iar in caz ca permite va fi redirectat la callback
specificat care are forma urmatoare:
http://www.example.com/ytapi.html?oauth_token=CKF50YzI
HxCT85KMAg
• Token este tot tokenul de adineaori.
13. Oauth: Functionalitate
• Acum putem face cererea pentru access token
care are aceiasi parametri ca si cererea pentru
request token doar ca in plus are si request token.
• Raspunsul in caz de succes va avea forma:
oauth_token=ab3cd9j4ks73hf7g&oauth_token_secr
et=ZXhhbXBsZS5jb20.
• Acum detinem acces token si putem face cereri
pentru datele cu care vrem sa operam.
• Autorizarea e completa.
15. Oauth:Concluzie
• Oauth la vremea actuala este cel mai folosit protocol de autorizaresi
continua sa se dezvolte fiind folosit intens de servicii ca Facebook, Twitter,
Youtube.
• Oauth, deoarece foloseste tokens face ca totul sa fie usor si bine securizat.
• Ca source cod pentru oauth php putem gasi la adresa :
http://code.google.com/p/oauth-php/downloads/detail?name=oauth-
php-175.tar.gz&can=2&q= atat pentru google exemplu cat si pentru
twitter.
• Tot cod sursa se poate gasi si la:
http://oauth.googlecode.com/svn/code/php/
iar atat biblioteci cat si cod sursa (un exemplu testat personal) se poate
gasi atat la http://oauth.net/code/ la varianta php este un exemplu
simplu cat si walkthrough, cat si la https://github.com/willnorris/oauth-
php
http://apiwiki.justin.tv/mediawiki/index.php/OAuth_PHP_Tutorial .
16. OpenId: Introducere
• OpenId descrie modul de comunicare pentru ca un user sa se
autentifice la o aplicatie cu contul pe care il are la un anume
serviciu web fara sa fie nevoit sa ofere parola pe care o detine altei
aplicatii decat celei unde are deja un cont.
• Acest lucru ajuta userul ca sa nu fie nevoit sa isi faca mai multe
conturi si sa tina minte mai multe parole.
• Daca aplicatia unde vrea sa se autentifice foloseste OpenId-ul
serviciului web unde userul are deja cont atunci userul nu mai este
nevoit sa isi faca un nou cont pentru a putea face anumite cereri in
acea aplicatie.
• De obicei un identificator OpenId arata in felul urmator:
numeuser.numedomeniu unde nume domeniu sa zicem ca poate fi
blogspot.com.
• OpenId a fost implementat in May 2005 de catre Brad Fitzpatrick
denumit pentru prima data YADIS.
18. OpenId: Functionalitate
• Pentru a face rost de un openId endpoint trebuie
sa facem o cerere get la adresa:
https://www.google.com/accounts/o8/id iar google
uri endpoint returnat o sa aiba urmatorul format:
<Service priority="0">
<Type>http://specs.openid.net/auth/2.0/server
</Type> <URI>{Google's login endpoint URI}</URI>
</Service>
• In continuare o sa aratam un exemplu de cerere
cu maxim timpul de sesiune de cinci minute:
20. OpenId: Functionalitate
• openid.ns = identifica versiunea protocolului OpenID
care se foloseste. Aceasta valoarea trebuie sa fie:
"http://specs.openid.net/auth/2.0".
• openid.claimed_id = identificator optional pentru
cerere. Valoarea lui trebuie setata cu:
"http://specs.openid.net/auth/2.0/identifier_select".
• openid.identity este optional;
• openid.return_to=indica url-ul unde userul trebuie
returnat dupa logare;
• Openin.mode=modul de interactiune cu userul : daca
este permis sau nu;
• openid.ns.ui=pagina de autentificare va aparea separat
21. OpenId: Functionalitate
• openid.ns.ax=cererea pentru informatiile despre
user;
• openid.ax.required=specifica atributul care este
cerut spre exemplu email, nume.
• Restul parametrilor care nu sunt
explicatiinseamna ca sunt optionali.
• In continuare o sa aratam cum o sa aiba formatul
raspunsul in caz de succes avand in vedere ca in
cerere am avut inclus si timpul de autentificare,
email si limba:
23. OpenId:Concluzie
• Ca source code am descarcat ultima versiune de
Zend si am instalat-o iar in folderul demos avem
un exemplu simplu de autentificare cu OpenId.
Ultima versiune de Zend se poate gasi la adresa:
http://www.zend.com/en/community/downloads
este zend framework 1.11.
• Ca instructiuni de instalare puteti sa le urmati pe
cele de la adresa:
http://www.lametadesign.com/blog/admin/how-
install-zend-framework-using-wamp-20-windows-
xp in caz ca aveti wamp.
24. Oauth vs OpenId
• Daca in oauth este vorba despre accesarea
resurselor pe care le detine identitatea in openId
este vorba despre accesarea indentitatii;
• Daca openId este decentralizat, oauth este
centralizat;
• Daca openId utilizeaza protocolul Diffie Helman
pentru schimbarea cheii, oauth utilizeaza una din
semnaturile RSA-SHA1 sau HMAC-SHA1;
• In ambele este vorba de trei parti participante;
• Putem spune ca oauth completeaza openId.