AUTHENTICATION • OIDC • OAUTH 2.0

AuthService.hu
Fejlesztői Dokumentáció

OpenID Connect (OIDC) & OAuth 2.0 Integrációs Útmutató. Biztonságos központi azonosítás webes, szerveroldali és nyilvános kliensekhez Authorization Code + PKCE folyamattal.

Aktuális integrációs profil
Issuer
oidc.authservice.hu
Flow
Authorization Code
PKCE
S256
ID Token
RS256
Verzió
IdPv1.8.2.2

Áttekintés

Az AuthService központi Identity Providerként az alkalmazásod helyett végzi a felhasználó hitelesítését. Az alkalmazás nem kapja meg a felhasználó jelszavát: a böngésző az AuthService hitelesítési felületére kerül, majd sikeres azonosítás után egy rövid életű authorization code-dal tér vissza a regisztrált callback URL-re.

Ajánlott modell: Authorization Code Flow + PKCE S256. A PKCE a jelenlegi AuthService implementációban az authorization code cseréjének kötelező része.
1AlkalmazásPKCE + state + nonce
→
2AuthServiceBelépés / MFA / Passkey
→
3Callbackauthorization code
→
4Token endpointID + access token

Gyors kezdés

  1. Regisztráld a szervezetedet és az alkalmazásodat. A Console-ban létrejön a kliensazonosító és megadhatók a redirect URI-k.
  2. Állíts be pontos redirect URI-t. Az AuthService csak regisztrált URI-ra ad vissza authorization code-ot.
  3. Generálj PKCE verifier/challenge párt. Használj S256 módszert.
  4. Irányítsd a böngészőt az authorization endpointra.
  5. A callbackben ellenőrizd a state-et, majd szerveroldalon cseréld a code-ot tokenekre.
  6. Ellenőrizd az ID Token aláírását és claim-jeit a JWKS alapján.

Kliens regisztráció

A partnerfiók és az első OIDC kliens az AuthService partnerregisztrációján hozható létre. A klienshez külön szabályozható a redirect URI, az engedélyezett scope-k, a kliens típusa és a végfelhasználói önregisztráció.

Partnerregisztráció

Discovery és JWKS

Az integráció során ne hardcode-old feleslegesen az endpointokat: az OIDC Discovery dokumentum géppel olvasható módon közli az aktuális szolgáltatói metaadatokat.

GEThttps://oidc.authservice.hu/.well-known/openid-configuration
GEThttps://oidc.authservice.hu/.well-known/jwks.json

Authorization endpoint

GEThttps://oidc.authservice.hu/oauth2/authorize

A böngészőt erre az endpointra kell irányítani. Az AuthService jelenleg a code response type-ot támogatja.

ParaméterKötelezőLeírás
client_idIgenA Console-ban kapott kliensazonosító.
redirect_uriIgenElőzetesen regisztrált callback URI.
response_typeIgencode
scopeIgenLegalább openid.
stateErősen ajánlottKéréshez kötött, véletlen CSRF-korrelációs érték.
nonceAjánlottID Token replay elleni korreláció.
code_challengeIgenPKCE S256 challenge.
code_challenge_methodIgenS256
GET /oauth2/authorize?
  client_id=YOUR_CLIENT_ID&
  redirect_uri=https%3A%2F%2Fapp.example.hu%2Fauth%2Fcallback&
  response_type=code&
  scope=openid%20profile%20email&
  state=RANDOM_STATE&
  nonce=RANDOM_NONCE&
  code_challenge=PKCE_CHALLENGE&
  code_challenge_method=S256

PKCE – S256

A kliens minden új authorization kéréshez generáljon egy nagy entrópiájú code_verifier értéket. Ebből SHA-256 hash + base64url kódolással készül a code_challenge. A verifier csak a token kérésben kerül elküldésre.

code_challenge = BASE64URL(
    SHA256(code_verifier)
)
Ne használd újra ugyanazt a verifier/challenge párt több bejelentkezési tranzakcióhoz.

Authorization code → tokenek

POSThttps://oidc.authservice.hu/oauth2/token

A callbackben kapott code egyszer használható. A token endpoint application/x-www-form-urlencoded kérést vár.

curl -X POST 'https://oidc.authservice.hu/oauth2/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' \
  --data-urlencode 'grant_type=authorization_code' \
  --data-urlencode 'code=AUTHORIZATION_CODE' \
  --data-urlencode 'redirect_uri=https://app.example.hu/auth/callback' \
  --data-urlencode 'code_verifier=ORIGINAL_CODE_VERIFIER'

Válasz

{
  "access_token": "...",
  "token_type": "Bearer",
  "expires_in": 900,
  "scope": "openid profile email",
  "id_token": "eyJ..."
}

Az expires_in tényleges értékét mindig a tokenválaszból kezeld; ne építs fix TTL-re.

UserInfo

GEThttps://oidc.authservice.hu/oauth2/userinfo
curl 'https://oidc.authservice.hu/oauth2/userinfo' \
  -H 'Authorization: Bearer ACCESS_TOKEN'

A visszaadott mezők a jóváhagyott scope-októl függenek. A sub az AuthService által kiadott felhasználói subject.

Refresh token és offline_access

Refresh token csak akkor kerül kiadásra az authorization code cseréjekor, ha a kérés tartalmazta az offline_access scope-ot. Az AuthService refresh-token rotációt alkalmaz.

curl -X POST 'https://oidc.authservice.hu/oauth2/token' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -u 'YOUR_CLIENT_ID:YOUR_CLIENT_SECRET' \
  --data-urlencode 'grant_type=refresh_token' \
  --data-urlencode 'refresh_token=REFRESH_TOKEN'
Fontos: sikeres rotáció után a régi refresh tokent ne használd újra. Mindig az új válaszban kapott refresh tokent tárold el.

Kijelentkezés

GEThttps://oidc.authservice.hu/oauth2/logout

Az AuthService OIDC logout folyamatot biztosít, és a Discovery dokumentumban end_session_endpoint értékként publikálja. Az alkalmazás a kijelentkezési folyamatot ezen az endpointon indítsa.

Token visszavonás

POSThttps://oidc.authservice.hu/oauth2/revoke

Ha egy hozzáférést vagy refresh tokent már nem kívánsz használni, a kliens a revocation endpointon kezdeményezheti a visszavonást.

Endpoint referencia

FunkcióMetódusEndpoint
OIDC DiscoveryGET/.well-known/openid-configuration
OAuth AS metadataGET/.well-known/oauth-authorization-server
JWKSGET/.well-known/jwks.json
AuthorizationGET/oauth2/authorize
TokenPOST/oauth2/token
UserInfoGET/oauth2/userinfo
LogoutGET/oauth2/logout
RevocationPOST/oauth2/revoke

Scope-ok és UserInfo claim-ek

openid

OIDC azonosítás alap scope-ja.

profile

name, locale, zoneinfo a UserInfo válaszban.

email

email és email_verified.

offline_access

Refresh token igénylése.

Hibakezelés

Az OAuth/OIDC hibákat a protokoll szerinti error mező alapján kezeld. A felhasználónak ne jeleníts meg nyers tokeneket, secretet vagy belső stack trace-t.

HibaJelentésTeendő
invalid_requestHiányos vagy hibás kérés.Ellenőrizd a paramétereket.
invalid_clientKlienshitelesítés sikertelen.Client ID/secret és auth method ellenőrzése.
invalid_grantLejárt/felhasznált code, hibás PKCE vagy refresh token.Indíts új authorization folyamatot.
invalid_tokenHiányzó, lejárt vagy érvénytelen access token.Frissíts vagy kérj új tokent.
login_requiredA hitelesítési folyamat már nem folytatható.Indíts új belépést az alkalmazásból.

Biztonsági követelmények

Redirect URI

Ne használj wildcard callbacket. A kliens ugyanazt a regisztrált redirect URI-t küldje az authorization és token lépésben.

PKCE

Minden authorization tranzakcióhoz új verifier/challenge pár. Az AuthService S256 módszert támogat.

state és nonce

A state legyen kiszámíthatatlan és sessionhöz kötött. Nonce használatakor az ID Tokenben kapott értéket ellenőrizd.

ID Token validáció

Ellenőrizd legalább az aláírást, iss, aud, exp és – ha küldtél – nonce értéket.

Client secret

Confidential kliens secretje kizárólag szerveroldalon tárolható. Böngészőbe, mobil binárisba vagy publikus repositoryba ne kerüljön.

Tokenek

Access és refresh tokeneket érzékeny hitelesítési adatként kezeld, naplóba ne írd őket, és csak TLS-en továbbítsd.

KÉSZEN ÁLLSZ?

Integráld az AuthService-t az alkalmazásodba.

Hozd létre a partnerfiókot, regisztráld a callback URI-t és indítsd el az első OIDC authorization flow-t.

Partnerfiók létrehozása