Á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.
S256. A PKCE a jelenlegi AuthService implementációban az authorization code cseréjének kötelező része.
Gyors kezdés
- Regisztráld a szervezetedet és az alkalmazásodat. A Console-ban létrejön a kliensazonosító és megadhatók a redirect URI-k.
- Állíts be pontos redirect URI-t. Az AuthService csak regisztrált URI-ra ad vissza authorization code-ot.
- Generálj PKCE verifier/challenge párt. Használj
S256módszert. - Irányítsd a böngészőt az authorization endpointra.
- A callbackben ellenőrizd a state-et, majd szerveroldalon cseréld a code-ot tokenekre.
- 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.
https://oidc.authservice.hu/.well-known/openid-configurationhttps://oidc.authservice.hu/.well-known/jwks.jsonPKCE – 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)
)
Authorization code → tokenek
https://oidc.authservice.hu/oauth2/tokenA 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
https://oidc.authservice.hu/oauth2/userinfocurl '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'
Kijelentkezés
https://oidc.authservice.hu/oauth2/logoutAz 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
https://oidc.authservice.hu/oauth2/revokeHa 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ódus | Endpoint |
|---|---|---|
| OIDC Discovery | GET | /.well-known/openid-configuration |
| OAuth AS metadata | GET | /.well-known/oauth-authorization-server |
| JWKS | GET | /.well-known/jwks.json |
| Authorization | GET | /oauth2/authorize |
| Token | POST | /oauth2/token |
| UserInfo | GET | /oauth2/userinfo |
| Logout | GET | /oauth2/logout |
| Revocation | POST | /oauth2/revoke |
Scope-ok és UserInfo claim-ek
openidOIDC azonosítás alap scope-ja.
profilename, locale, zoneinfo a UserInfo válaszban.
emailemail és email_verified.
offline_accessRefresh 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.
| Hiba | Jelentés | Teendő |
|---|---|---|
invalid_request | Hiányos vagy hibás kérés. | Ellenőrizd a paramétereket. |
invalid_client | Klienshitelesítés sikertelen. | Client ID/secret és auth method ellenőrzése. |
invalid_grant | Lejárt/felhasznált code, hibás PKCE vagy refresh token. | Indíts új authorization folyamatot. |
invalid_token | Hiányzó, lejárt vagy érvénytelen access token. | Frissíts vagy kérj új tokent. |
login_required | A 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.
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.