Ugrás a fő tartalomhoz

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égpontMire való
GET /oauth/authorizeA belépés és a hozzájárulás indítása (böngészőben)
POST /oauth/tokenKód → token csere, és token frissítése
GET /api/userA belépett felhasználó adatai és szervezetei
GET /api/me/tenantsA felhasználó szervezetei
POST /api/auth/logoutA 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_challenge kötelező, a code_challenge_method csak S256 lehet — más esetben a válasz 400.
  • A scope paramé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.