CSF Docs

OAuth 2

Előszó

OAuth2 lehetővé teszi a fejlesztőknek, hogy könnyedén hozzáférhessenek a CSF által tárolt adataihoz felhasználói bejelentkezés után. Többféle OAuth2 autentikáció létezik, közülük a hitelesítő kódot (authorization code grant) és az implicit hitelesítést (implicit grant) támogatjuk.

Erőforrások

Az implementáció első lépése, hogy egy projectet létrehozása, és egy hozzá tartozó OAuth2 kulcs generálása. Az OAuth használatához számos könyvtár elérhető, de ha valaki saját maga szeretné implementálni, használja az RFC 6749 specifikációt a részletekért. A project és egy hozzá tartozó OAuth kulcs létrehozása után szükségünk lesz a kulcs client_id azonosítójára és client_secret kulcsára.

OAuth URL
URL Leírás
https://api.csfcloud.com/oauth2/auth Bejelentkezést indító URL
https://api.csfcloud.com/oauth2/token Token URL
https://api.csfcloud.com/oauth2/tokeninfo Token információ URL
OAuth Scope -ok
Scope Leírás
profile Felhasználói profil lekérdezése (email nélkül)
email E-mail cím lekérdezése

Hitelesítő kód

A hitelesítő kódú token lekérdezés működésének alapelve, hogy a bejelentkezés után egy hitelesítő kódot kell lecserélni egy tokenre.

Példa a bejelentkezési URL -re
https://api.csfcloud.com/oauth2/auth?response_type=code&client_id=50361146242286465566&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fendpoint&scope=profile+email&state=%7B%22message%22%3A%22Hello+World%21%22%7D
response_type code
client_id A projecthez tartozó client_id
redirect_uri A bejelentkezés után átirányítótt URL
scope A kért scope-ok vesszővel elválasztva (%20 vagy +)
state (Opcionális) Bármi, amit az átirányítás után át akarunk adni

Amikor valaki erre az URL -re jut, meg fog jelenni a bejelentkező ablak, ahol bejelentkezhet, majd hozzáférést adhat az adatai eléréséhez. Ha elfogadják, akkor tovább lesznek irányítva a redirect_uri paraméterben megadott URL -re, ami tartalmazni fogja a code paramétert, a hitelesítő kóddal, és ha volt megadott state, akkor ugyanazzal az értékkel.

Áritányítási URL példa
http://localhost:8080/endpoint?code=56572502963630021938553193071056887015132175046677&state=%7B%22message%22%3A%22Hello+World%21%22%7D

Ezután a kapott code hitelesítő kódot le kell cserélni egy token-re, egy POST hívással a token URL -en, a következő paraméterekkel:

  • client_id - a projecthez tartozó kulcs azonosító
  • client_secret - a projecthez tartozó privát kulcs
  • grant_type - a következő érték: authorization_code
  • code - a kapott hitelesítő kód
  • redirect_uri - az átirányítási URL, karakterre pontos egyezéssel
Az RFC 6749 specifikáció alapján csak x-www-form-urlencoded típusú tartalmat fogad el az OAuth2, JSON tartalmat nem.
Token lekérdezés példa
curl \ -X POST \ -d "client_id=50361146242286465566&client_secret=bM2nede0PrODCMJ95P9bVPrh9wAb8yX9&grant_type=authorization_code&code=56572502963630021938553193071056887015132175046677&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fendpoint" \ https://api.csfcloud.com/oauth2/token
Token lekérdezés válasz példa

Az expires_in -ben meghatározott másodpercek letelte után a token nem fog tovább működni. Ekkor a kapott refresh_token segítségével lehet egy új tokent kérni.

Token frissítése példa
curl \ -X POST \ -d "client_id=50361146242286465566&client_secret=bM2nede0PrODCMJ95P9bVPrh9wAb8yX9&grant_type=refresh_token&token=EI_OmPn8Hh7DJJvcuDw-VVti4NLcwLWiJxK_CJhWt1XmA0cqUULJvSiJKeD-ODwBDaM4M5wG6YWWox0aK9cDOA" \ https://api.csfcloud.com/oauth2/token

Erre egy friss token lesz generálva.

Implicit hitelesítés

A hitelesítő kódú token lekérdezés működésének alapelve, hogy a bejelentkezés után a token át lesz adva a visszatérő URL -ben. Így a csak kliensből álló appok is használhatják a hitelesítést szerver oldal nélkül. Ennek a módszernek vannak hátrányai, könnyebb implementálni, de mivel a token már a visszatérési URL -ben benne van, így ki van téve harmadik feleknek. Ez a módszer refresh_token NÉLKÜL tér vissza, így újra be kell jelentkeztetni a felhasználót miután a token lejárt

Példa a bejelentkezési URL -re
https://api.csfcloud.com/oauth2/auth?response_type=token&client_id=50361146242286465566&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Fendpoint&scope=profile+email&state=%7B%22message%22%3A%22Hello+World%21%22%7D
response_type token
client_id A projecthez tartozó client_id
redirect_uri A bejelentkezés után átirányítótt URL
scope A kért scope-ok vesszővel elválasztva (%20 vagy +)
state (Opcionális) Bármi, amit az átirányítás után át akarunk adni

Hitelesítés után a felhasználó át lesz irányítva a visszatérési URL -re. Az URL -ben szerepelnek a token adatai. Ezek nem query paraméterek! Nem jutnak el szerver oldalra! Figyeljen a # karakterre.

Áritányítási URL példa
http://localhost:8080/endpoint#access_token=2iW7oAKZ6hQjadfQGmlKL9zZC1ELnOlLldIyRfRb6gGSBLj7wG8P0IoYh29KcPrPiXqFi9Y_E3Oh-PfbKvxW5A&token_type=Bearer&expires_in=3600&scope=profile+email