OpenID Connect: bu nədir, autentifikasiya və avtorizasiya protokolu

Müəllif: IT Sectr Dərc olunub: 2026-04-05 Oxuma vaxtı: 9 dəq

OpenID Connect — OAuth 2.0 üzərində qurulmuş autentifikasiya protokoludur və standart avtorizasiyaya istifadəçi şəxsiyyətinin yoxlanılması qatını əlavə edir. Xalis OAuth 2.0-dan fərqli olaraq, access token istifadəçi haqqında məlumat olmadan resurslara giriş təmin edir, OpenID Connect isə ID Token — təsdiqlənmiş profil məlumatları ilə JWT qaytarır. OpenID Foundation, 2026 məlumatlarına görə, protokol bütün böyük Identity Provider-lər — Google, Apple, Microsoft və Auth0 tərəfindən dəstəklənir.

Başlıca

  • OpenID Connect — OAuth 2.0 üzərində autentifikasiya protokolu, ID Token qaytarır
  • ID Token — istifadəçi haqqında claims olan JWT: identifikator, email, ad, avatar
  • Authorisation Code Flow — mobil və server tətbiqləri üçün əsas OIDC axını
  • Single Sign-On — istifadəçi Identity Provider vasitəsilə bir dəfə daxil olur və bütün qoşulmuş tətbiqlərə giriş əldə edir
  • Discovery URL — provayder konfiqurasiyasını əldə etmək üçün standart endpoint /.well-known/openid-configuration

OpenID Connect nədir?

OpenID Connect (OIDC) — OAuth 2.0 üzərində əlavə qat kimi qurulmuş açıq autentifikasiya protokoludur. O, OAuth 2.0-da çatışmayanı standartlaşdırır: istifadəçi şəxsiyyətinin yoxlanılması. OAuth 2.0 “hansı tətbiqin girişi var?” sualına cavab verirsə, OIDC “məhz bu istifadəçi kimdir?” sualına cavab verir.

Protokol ID Token — JSON Web Token (JWT) istifadə edir, tərkibində claims dəsti var: subyektin unikal identifikatoru, email, ad, avatar, buraxılış və istifadə müddəti. Müştəri tətbiqi ID Token-i kriptoqrafik olaraq yoxlaya bilər — server tokeni RS256 və ya ES256 ilə imzalayır, müştəri isə JWKS endpointi vasitəsilə əldə edilmiş açıq açarla imzanı yoxlayır.

Auth0, 2025 məlumatlarına görə, üçüncü tərəf autentifikasiyasından istifadə edən mobil tətbiqlərin 78%-dən çoxu Google Sign-In və ya Sign in with Apple vasitəsilə OIDC tətbiq edir. Bu, protokolu social login və korporativ autentifikasiya üçün de-fakto standart halına gətirir.

OpenID Connect necə işləyir

OpenID Connect müştəri növündən asılı olaraq bir neçə axın (flow) təyin edir. Mobil tətbiqlər üçün standart Proof Key for Code Exchange (PKCE) ilə Authorisation Code Flow-dur — cihazda client secret olmadan belə qoruma təmin edir.

Identity Provider və onun rolu

Identity Provider (IdP) — istifadəçinin autentifikasiyasını həyata keçirən və tokenlər buraxan serverdir. OIDC ekosistemində IdP iki əsas endpoint təqdim edir: istifadəçinin daxil olması üçün Authorisation Endpoint və kodu tokenlərə dəyişmək üçün Token Endpoint. Müştəri bu endpoint-lərin ünvanlarını Discovery URL — provayderin bütün konfiqurasiyasını qaytaran JSON sənədi olan standart yol /.well-known/openid-configuration vasitəsilə öyrənir.

Hər bir IdP öz JWKS (JSON Web Key Set) — ID Token imzasını yoxlamaq üçün açıq açarlar dəstini dərc edir. Müştəri bu açarları keşləyir və serverə müraciət etmədən hər bir alınan tokenin yoxlanılması üçün istifadə edir.

PKCE ilə Authorisation Code Flow

Authorisation Code Flow — üç addımlı prosesdir. Əvvəlcə mobil tətbiq code verifier (43–128 simvol uzunluğunda təsadüfi sətir) və onun hash-i — code challenge yaradır. Tətbiq client_id, redirect_uri, scope (openid profile email) və code challenge ehtiva edən URL ilə brauzer və ya WebView açır. İstifadəçi IdP səhifəsində giriş məlumatlarını daxil edir və razılığı təsdiqləyir. IdP brauzeri authorisation code ilə tətbiqə geri yönləndirir.

İkinci addımda tətbiq serverin Token Endpoint-ə authorisation code, code verifier və client_id göndərir. Server code verifier-i saxlanılmış code challenge-ə qarşı yoxlayır və ID Token, Access Token və isteğe bağlı Refresh Token qaytarır. Üçüncü addımda tətbiq ID Token-i yoxlayır: JWKS vasitəsilə imzanı təsdiqləyir, issuer (iss), audience (aud) və istifadə müddətini (exp) yoxlayır. Yoxlama uğurlu olarsa, istifadəçi autentifikasiya edilmiş sayılır.

PKCE (Proof Key for Code Exchange) ictimai müştərilərdə standart Authorisation Code Flow-a xas olan zəifliyi aradan qaldırır. Mobil tətbiq client secret-i təhlükəsiz saxlaya bilmədiyi üçün authorisation code-u ələ keçirmiş hücumçu onu tokenlərə dəyişə bilərdi. Code verifier bu problemi həll edir: kod ələ keçirilsə belə, orijinal code verifier olmadan dəyişdirmə mümkün deyil. OAuth Security Best Practices (RFC 9700) mobil tətbiqlər də daxil olmaqla bütün ictimai müştərilər üçün PKCE tələb edir.

ID Token və Access Token

OpenID Connect iki prinsipial fərqli token qaytarır: ID Token və Access Token. ID Token — həmişə JWT-dir, müştəri onu müstəqil oxuya və yoxlaya bilər. O, istifadəçi haqqında məlumat ehtiva edir və API-ə giriş üçün deyil, autentifikasiya üçün istifadə olunur.

ID Token-in strukturu

ID Token Base64-də kodlanmış və nöqtələrlə ayrılmış header, payload və signature-dən ibarətdir. Header alg (imza alqoritmi) və kid (açar identifikatoru) ehtiva edir. Payload məcburi claims-ləri ehtiva edir: iss (issuer — token verən), sub (subject — istifadəçinin unikal ID-si), aud (audience — müştəri identifikatoru), exp (expiration), iat (issued at). İsteğe bağlı — name, email, picture, locale.

Google-dan ID Token-in dekodlanmış payload nümunəsi:

json
{
  "iss": "https://accounts.google.com",
  "sub": "1234567890",
  "aud": "my-app-123.apps.googleusercontent.com",
  "exp": 1812345678,
  "iat": 1812342078,
  "name": "Ivan Petrov",
  "email": "ivan@example.com"
}

Access Token — müştərinin API sorğularında ötürdüyü opaque token (ixtiyari sətir) və ya JWT-dir. ID Token-dən fərqli olaraq, access token müştəri tərəfindən oxunmaq üçün nəzərdə tutulmayıb — onun formatı və məzmunu yalnız resurs serveri və avtorizasiya serverinə məlumdur. Access Token-in scope-u — giriş hüquqlarının məhdudiyyəti var — və qısa ömür müddəti, adətən 15–60 dəqiqə.

OpenID Connect-in OAuth 2.0-dan fərqləri

OAuth 2.0 — tətbiqin istifadəçi resurslarına necə giriş əldə etdiyini təyin edən avtorizasiya çərçivəsidir. OpenID Connect — bu prosesə autentifikasiya əlavə edən əlavə qatdır. Əsas fərq: OAuth 2.0 token formatını təyin etmir və tətbiqə sorğunu məhz kimin etdiyini öyrənmək imkanı vermir.

ParametrOAuth 2.0OpenID Connect
MəqsədResurslara girişin avtorizasiyasıAutentifikasiya + avtorizasiya
Şəxsiyyət tokeniYoxdurID Token (JWT)
Scopeapi:read, api:writeopenid, profile, email
UserInfo endpointİsteğe bağlıStandartlaşdırılıb
Single LogoutYoxdurOpenID Connect Session Management spesifikasiyası

OpenID Connect nə vaxt seçilməlidir

OpenID Connect tətbiq istifadəçini tanımalı olduqda zəruridir, sadəcə onun məlumatlarına giriş əldə etmək üçün deyil. “Google ilə daxil ol” və ya “Sign in with Apple” istifadə edirsinizsə — bu OIDC-dir. Tətbiqiniz istifadəçi adından üçüncü tərəf API-ni çağırırsa və onun şəxsiyyətini bilmək lazım deyilsə — xalis OAuth 2.0 kifayətdir. Korporativ sistemlər üçün Single Sign-On (SSO) ilə seçim birmənalıdır: yalnız OpenID Connect, çünki standartlaşdırılmış çıxış və sessiya idarəetməsi təmin edir.

OpenID Connect-in mobil tətbiqlərdə tətbiqi

OpenID Connect-in mobil tətbiqə inteqrasiyası uyğun kitabxananın seçilməsini və axının düzgün konfiqurasiyasını tələb edir. Android üçün credential manager (AndroidX Credentials) və ya AppAuth kitabxanası istifadə olunur. iOS üçün — ASWebAuthenticationSession ilə AuthenticationServices çərçivəsi.

Kotlin kod nümunəsi (Android)

Aşağıda AppAuth-Android kitabxanası ilə Authorisation Code Flow-un işə salınması nümunəsi verilmişdir. Tətbiq avtorizasiya sorğusu yaradır, istifadəçinin daxil olması üçün brauzer açır və tokenlərlə callback-i emal edir.

kotlin
val authRequest = AuthorizationRequest.Builder(
    serviceConfig,
    clientId,
    "code",
    Uri.parse("com.example.app:/oauth")
)
.setScope("openid profile email")
.build()

val authService = AuthorizationService(this)
val intent = authService.getAuthorizationRequestIntent(authRequest)
startActivityForResult(intent, REQUEST_CODE)

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {
    if (requestCode == REQUEST_CODE) {
        val response = AuthorizationResponse.fromIntent(data)
        if (response?.authorizationCode != null) {
            exchangeCodeForTokens(response.authorizationCode)
        }
    }
}

Swift kod nümunəsi (iOS)

Apple-dan ASWebAuthenticationSession iCloud Keychain vasitəsilə SSO dəstəyi ilə OIDC axını üçün daxili brauzer təmin edir. Sessiya avtorizasiya URL-i ilə işə salınır, callback completion handler vasitəsilə emal olunur.

OpenID Connect üçün kitabxana seçərkən PKCE dəstəyini qutudan çıxan kimi nəzərə alın: AppAuth-Android və AppAuth-iOS PKCE-ni standart olaraq dəstəkləyir. Firebase Authentication Google Sign-In, Sign in with Apple və Microsoft üçün OIDC-dən istifadə edir — tərtibatçı axını əl ilə həyata keçirməli deyil. Öz IdP-si olan korporativ sistemlər üçün (məsələn, Keycloak və ya Okta) AppAuth konfiqurasiya və xəta idarəetməsi üzərində tam nəzarətlə standart seçim olaraq qalır.

swift
let authURL = URL("https://accounts.google.com/o/oauth2/v2/auth")!
let callbackURL = URL("com.example.app://oauth")!

let session = ASWebAuthenticationSession(
    url: authURL,
    callbackURLScheme: callbackURL.scheme!
) { url, error in
    guard let url = url else { return }
    let components = URLComponents(url: url)
    let code = components?.queryItems?.first(where: { $0.name == "code" })?.value
    if let code = code { exchangeCode(code) }
}
session.start()

Tez-tez verilən suallar

OpenID Connect OAuth 2.0-dan nə ilə fərqlənir?

OpenID Connect — OAuth 2.0 üzərində autentifikasiya əlavə edən əlavə qatdır. OAuth 2.0 yalnız resurslara girişin avtorizasiyasına cavabdehdir. OIDC ID Token — istifadəçi məlumatları ilə JWT təqdim edir, UserInfo endpointini standartlaşdırır və Single Sign-On və çıxış imkanları əlavə edir.

Hansı OIDC axını mobil tətbiqlər üçün uyğundur?

Mobil tətbiqlər üçün PKCE ilə Authorisation Code Flow tövsiyə olunur. Client secret tələb etmir, authorisation code-un ələ keçirilməsindən qoruyur və bütün böyük Identity Provider-lər tərəfindən dəstəklənir. Implicit Flow köhnəlib və yeni layihələrdə istifadə edilməməlidir.

ID Token müştəri tərəfdə necə yoxlanılır?

ID Token üç addımda yoxlanılır: JWKS endpoint-dən açıq açarla imzanın təsdiqlənməsi, claims-lərin (iss, aud, exp) yoxlanılması və payload-un dekodlanması. Əksər SDK-lar — AppAuth, MSAL, Google Sign-In — token alındıqdan sonra bu yoxlamanı avtomatik yerinə yetirir.

Sorğuda “openid” scope-u nə deməkdir?

Openid scope-u — OIDC sorğusunu adi OAuth 2.0-dan fərqləndirən məcburi parametrdir. Olmadan server ID Token qaytarmayacaq. Əlavə scope-lar — profile, email, address — tokenə istifadəçi haqqında hansı konkret claims-lərin daxil ediləcəyini müəyyən edir.

OpenID Connect brauzersiz istifadə edilə bilərmi?

Texniki olaraq — bəli, Resource Owner Password Credentials axını ilə, lakin bu tövsiyə edilmir. Brauzer axını etimadnamənin izolyasiyasını təmin edir — tətbiq istifadəçinin şifrəsini heç vaxt görmür. Apple və Google öz xidmətləri üçün brauzer autentifikasiyası tələb edir.

Nəticə

  • OpenID Connect — OAuth 2.0 üzərində JWT formatında ID Token ilə autentifikasiya protokolu
  • ID Token istifadəçi haqqında təsdiqlənmiş claims-ləri ehtiva edir və server tərəfindən imzalanır
  • PKCE ilə Authorisation Code Flow — mobil tətbiqlər üçün standart və təhlükəsiz axın
  • Identity Provider müştərinin avtomatik konfiqurasiyası üçün Discovery URL və JWKS dərc edir
  • OIDC Single Sign-On və tətbiqlər arasında standartlaşdırılmış çıxışı dəstəkləyir
  • AppAuth və AuthenticationServices — müvafiq olaraq Android və iOS üçün əsas kitabxanalar
  • OpenID Connect Google Sign-In, Sign in with Apple və korporativ SSO həllərində istifadə olunur

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun