SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
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;
  • 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