OAuth — belépés a felhasználó nevében
Ha az alkalmazásodba a felhasználó a saját Vecton-fiókjával lép be, az identity OAuth 2 kiadóként működik: Authorization Code grant, kötelező PKCE-vel. Az implicit grant ki van kapcsolva.
Kiadó: https://identity.vecton.hu
| Végpont | Mire való |
|---|---|
GET /oauth/authorize | A belépés és a hozzájárulás indítása (böngészőben) |
POST /oauth/token | Kód → token csere, és token frissítése |
GET /api/user | A belépett felhasználó adatai és szervezetei |
GET /api/me/tenants | A felhasználó szervezetei |
POST /api/auth/logout | A jelenlegi token visszavonása |
OAuth-kliens
A klienst nem magad hozod létre: marketplace-appnál az app létrehozásakor jön
létre (Marketplace-app), egyéb partner-
integrációhoz a Vecton regisztrálja. A visszatérési cím (redirect_uri)
pontos egyezéssel ellenőrzött — helyettesítő karakter nincs. A külső
(nem a Vecton saját) klienseknél a felhasználó hozzájárulási képernyőt lát.
1. Az authorize kérés
Generálj egy véletlen code_verifier-t (43–128 karakter), és képezd belőle a
code_challenge-et: BASE64URL(SHA256(code_verifier)).
https://identity.vecton.hu/oauth/authorize
?response_type=code
&client_id=<kliens-azonosító>
&redirect_uri=https://app.example.com/callback
&code_challenge=<code_challenge>
&code_challenge_method=S256
&state=<véletlen érték>
- A
code_challengekötelező, acode_challenge_methodcsakS256lehet — más esetben a válasz400. - A
scopeparamétert hagyd el (lásd: Emberi kliens ne kérjen hatókört). - A
stateértékét a visszatéréskor ellenőrizd.
A felhasználó belép (szükség esetén kétlépcsős azonosítással vagy passkey-jel),
majd az identity a redirect_uri-ra irányít code és state paraméterrel.
2. Token csere
curl -X POST https://identity.vecton.hu/oauth/token \
-H "Accept: application/json" \
-d grant_type=authorization_code \
-d client_id=<kliens-azonosító> \
-d redirect_uri=https://app.example.com/callback \
-d code=<kapott kód> \
-d code_verifier=<code_verifier>
Bizalmas (szerveroldali) kliens a client_secret-et is küldi. A válasz:
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "eyJ0eXAiOi…",
"refresh_token": "def50200…"
}
Az expires_in értékét olvasd ki, ne égesd be a lejáratot.
3. Frissítés
curl -X POST https://identity.vecton.hu/oauth/token \
-H "Accept: application/json" \
-d grant_type=refresh_token \
-d client_id=<kliens-azonosító> \
-d refresh_token=<frissítő token>
A hozzáférési token alapból 60 percig, a frissítő token 30 napig érvényes. Frissítéskor új tokenpárt kapsz; a régi frissítő tokent dobd el.
Melyik szervezetet hívjam?
A token a felhasználóhoz szól, nem egy szervezethez. A felhasználó
szervezeteit a GET /api/me/tenants (vagy a GET /api/user válaszának
tenants mezője) adja; elemenként az id, a name, a szerepkör (role)
és a szervezet tenant-hostja (app_url) szerepel. Az alkalmazásod ezek közül
választ, és a kiválasztott szervezet app_url-jét hívja ugyanazzal a tokennel. Ha a felhasználó nem
tagja a szervezetnek, a tenant-host 403 tenant_not_a_member-rel válaszol.
Kijelentkezés
POST /api/auth/logout— a jelenlegi token visszavonása.POST /api/auth/logout-all— a felhasználó minden tokenjének visszavonása.
A felhasználó a Vecton-fiókjában az Alkalmazások és tokenek oldalon
bármikor visszavonhatja az alkalmazásod hozzáférését; ezután a token
401-et kap, és újra be kell léptetni.