SlideShare a Scribd company logo
Oauth vs OpenId
• Oauth            • OpenId
Introducere       Introducere
Functionalitate   Functionalitate
Concluzie         Concluzie

          Oauth vs OpenId
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.
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;
Oauth: Functionalitate




Imagine de la: http://oauth.net/core/1.0/#signing_process
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
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
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:
Oauth: Functionalitate
• POST /accounts/OAuthGetRequestToken HTTP/1.1
• Host: https://www.google.com
• Content-Type: application/x-www-form-urlencoded
  Authorization: OAuth
  oauth_consumer_key="msczhOK936UrGhyCAn_Dfg",
  oauth_signature_method="RSA-SHA1",
  oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2
  FPY%3D",
• oauth_timestamp="137131200",
  oauth_nonce="4572616e48616d6d65724c61686176",
  oauth_version="1.0"
• scope=http://gdata.youtube.com
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 &.
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.
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
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.
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.
Oauth: Functionalitate




Imagine: http://code.google.com/apis/youtube/2.0/developers_guide_protocol_oauth.html
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 .
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.
OpenId: Functionalitate




Imagine de la: http://code.google.com/apis/accounts/docs/OpenID.html
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:
OpenId: Functionalitate
• https://www.google.com/accounts/o8/id
  ?openid.ns=http://specs.openid.net/auth/2.0
  &openid.ns.pape=http://specs.openid.net/extensions/pape/1.0
  &openid.ns.max_auth_age=300
  &openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select
  &openid.identity=http://specs.openid.net/auth/2.0/identifier_select
  &openid.return_to=http://www.example.com/checkauth
  &openid.realm=http://www.example.com/
  &openid.assoc_handle=ABSmpf6DNMw &openid.mode=checkid_setup
  &openid.ui.ns=http://specs.openid.net/extensions/ui/1.0
  &openid.ui.mode=popup &openid.ui.icon=true
  &openid.ns.ax=http://openid.net/srv/ax/1.0
  &openid.ax.mode=fetch_request
  &openid.ax.type.email=http://axschema.org/contact/email
  &openid.ax.type.language=http://axschema.org/pref/language
  &openid.ax.required=email,language
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
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:
OpenId: Functionalitate
•   http://www.example.com/8080/checkauth ?openid.ns=http://specs.openid.net/auth/2.0
    &openid.mode=id_res &openid.op_endpoint=https://www.google.com/accounts/o8/ud
    &openid.response_nonce=2008-09-18T04:14:41Zt6shNlcz-MBdaw
    &openid.return_to=http://www.example.com:8080/checkauth
    &openid.assoc_handle=ABSmpf6DNMw
    &openid.ns.pape=http://specs.openid.net/extensions/pape/1.0 &openid.pape.auth_time=2005-
    05-15T17:11:51Z
    &openid.pape.auth_policies=http://schemas.openid.net/pape/policies/2007/06/none
    &openid.signed=op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle,ax.mod
    e,ax.type.email,ax.value.email &openid.sig=s/gfiWSVLBQcmkjvsKvbIShczH2NOisjzBLZOsfizkI=
    &openid.identity=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2sa3
    RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U
    &openid.claimed_id=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2
    sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U
    &openid.ns.ax=http://openid.net/srv/ax/1.0
•   &openid.ax.mode=fetch_response
•   &openid.ax.type.email=http://axschema.org/contact/email
    &openid.ax.value.email=fred.example@gmail.com
    &openid.ax.type.language=http://axschema.org/pref/language &openid.ax.value.language=english
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.
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.
Resurse
      Principalele resurse:
•   http://openid.net/developers/specs/
•   http://code.google.com/apis/youtube/2.0/developers_
    guide_protocol_oauth.html
•   Wikipedia
•   http://googlecodesamples.com/oauth_playground/
•   Zend Framework
•   http://oauth.net/core/1.0/#anchor14
•   http://code.google.com/apis/accounts/docs/OpenID.ht
    ml
•   http://oauth.net/core/1.0/#signing_process

More Related Content

PPTX
Web authentication & authorization
PPT
OAuth
PDF
How to rearrange the deck chairs on the titanic. (Mark Smalley - IT Paradigmo...
PDF
Mobile automation – should I use robotium or calabash or appium?
PPTX
Industry 4.0 – the German vision for advanced manufacturing
PPT
PPT
PPTX
Autentificarea si autorizarea web
Web authentication & authorization
OAuth
How to rearrange the deck chairs on the titanic. (Mark Smalley - IT Paradigmo...
Mobile automation – should I use robotium or calabash or appium?
Industry 4.0 – the German vision for advanced manufacturing
Autentificarea si autorizarea web

Similar to Oauth vs open id (12)

PPTX
Iasi code camp 20 april 2013 designing res tfull webservices and web apis - r...
PPT
Programare Web - Arhitectura WWW
PDF
PDF
Manual Spear
PDF
Web-ul nostru (cel de toate zilele)
PDF
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
PDF
L. Alboaie, S. Buraga: "Servicii Web. Concepte de bază și implementări" (2006)
PDF
Dela e-mail la Social Web
PPT
Utilizare internet
PPT
Utilizare internet
PPT
Istoria Web-ului - part 1 (2) - tentativ How to Web 2009
PPTX
Ce este de fapt internetul cum al folosim.pptx
Iasi code camp 20 april 2013 designing res tfull webservices and web apis - r...
Programare Web - Arhitectura WWW
Manual Spear
Web-ul nostru (cel de toate zilele)
Web 2020 02/12: Programare Web – HTTP. Cookie-uri. Sesiuni Web
L. Alboaie, S. Buraga: "Servicii Web. Concepte de bază și implementări" (2006)
Dela e-mail la Social Web
Utilizare internet
Utilizare internet
Istoria Web-ului - part 1 (2) - tentativ How to Web 2009
Ce este de fapt internetul cum al folosim.pptx
Ad

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;
  • 4. Oauth: Functionalitate Imagine de la: http://oauth.net/core/1.0/#signing_process
  • 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:
  • 8. Oauth: Functionalitate • POST /accounts/OAuthGetRequestToken HTTP/1.1 • Host: https://www.google.com • Content-Type: application/x-www-form-urlencoded Authorization: OAuth oauth_consumer_key="msczhOK936UrGhyCAn_Dfg", oauth_signature_method="RSA-SHA1", oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2 FPY%3D", • oauth_timestamp="137131200", oauth_nonce="4572616e48616d6d65724c61686176", oauth_version="1.0" • scope=http://gdata.youtube.com
  • 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.
  • 17. OpenId: Functionalitate Imagine de la: http://code.google.com/apis/accounts/docs/OpenID.html
  • 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:
  • 19. OpenId: Functionalitate • https://www.google.com/accounts/o8/id ?openid.ns=http://specs.openid.net/auth/2.0 &openid.ns.pape=http://specs.openid.net/extensions/pape/1.0 &openid.ns.max_auth_age=300 &openid.claimed_id=http://specs.openid.net/auth/2.0/identifier_select &openid.identity=http://specs.openid.net/auth/2.0/identifier_select &openid.return_to=http://www.example.com/checkauth &openid.realm=http://www.example.com/ &openid.assoc_handle=ABSmpf6DNMw &openid.mode=checkid_setup &openid.ui.ns=http://specs.openid.net/extensions/ui/1.0 &openid.ui.mode=popup &openid.ui.icon=true &openid.ns.ax=http://openid.net/srv/ax/1.0 &openid.ax.mode=fetch_request &openid.ax.type.email=http://axschema.org/contact/email &openid.ax.type.language=http://axschema.org/pref/language &openid.ax.required=email,language
  • 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:
  • 22. OpenId: Functionalitate • http://www.example.com/8080/checkauth ?openid.ns=http://specs.openid.net/auth/2.0 &openid.mode=id_res &openid.op_endpoint=https://www.google.com/accounts/o8/ud &openid.response_nonce=2008-09-18T04:14:41Zt6shNlcz-MBdaw &openid.return_to=http://www.example.com:8080/checkauth &openid.assoc_handle=ABSmpf6DNMw &openid.ns.pape=http://specs.openid.net/extensions/pape/1.0 &openid.pape.auth_time=2005- 05-15T17:11:51Z &openid.pape.auth_policies=http://schemas.openid.net/pape/policies/2007/06/none &openid.signed=op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle,ax.mod e,ax.type.email,ax.value.email &openid.sig=s/gfiWSVLBQcmkjvsKvbIShczH2NOisjzBLZOsfizkI= &openid.identity=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2sa3 RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U &openid.claimed_id=https://www.google.com/accounts/o8/id/id=ACyQatixLeLODscWvwqsCXWQ2 sa3RRaBhaKTkcsvUElI6tNHIQ1_egX_wt1x3fAY983DpW4UQV_U &openid.ns.ax=http://openid.net/srv/ax/1.0 • &openid.ax.mode=fetch_response • &openid.ax.type.email=http://axschema.org/contact/email &openid.ax.value.email=fred.example@gmail.com &openid.ax.type.language=http://axschema.org/pref/language &openid.ax.value.language=english
  • 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.
  • 25. Resurse Principalele resurse: • http://openid.net/developers/specs/ • http://code.google.com/apis/youtube/2.0/developers_ guide_protocol_oauth.html • Wikipedia • http://googlecodesamples.com/oauth_playground/ • Zend Framework • http://oauth.net/core/1.0/#anchor14 • http://code.google.com/apis/accounts/docs/OpenID.ht ml • http://oauth.net/core/1.0/#signing_process