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.
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) |
E-mail cím lekérdezése |
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=96497451545382278081&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=62534942254861778494734064680728537946987494613082&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 kulcsgrant_type
- a következő érték: authorization_code
code
- a kapott hitelesítő kódredirect_uri
- az átirányítási URL, karakterre pontos egyezésselx-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=96497451545382278081&client_secret=hRoqREcASTpSMsrvUOgo3lUsW4LLkg2z&grant_type=authorization_code&code=62534942254861778494734064680728537946987494613082&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=96497451545382278081&client_secret=hRoqREcASTpSMsrvUOgo3lUsW4LLkg2z&grant_type=refresh_token&token=lp4N4txN3-YQgW8V-yChkL6XcCmvstFLBoMLLenaopc5PMY1FImXOf9enj0m7Sg8_UFRoAjVwlMRHBRjALVyyw" \
https://api.csfcloud.com/oauth2/token
|
Erre egy friss token lesz generálva.
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=96497451545382278081&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=8NxW20wgoiIBidI6nwc0GqGfB_BrjxcW5NfbXSwGAgluXkrkyeP-sXmcDA6IkX8iJG5q8MWqorWtZRXJyZkLrA&token_type=Bearer&expires_in=3600&scope=profile+email
|