OpenID Connect: ano ito, protokol ng pagpapatotoo at awtorisasyon

May-akda: IT Sectr Nai-publish: 2026-04-05 Oras ng pagbabasa: 9 min

OpenID Connect — ay isang protokol ng pagpapatotoo na binuo sa ibabaw ng OAuth 2.0, na nagdaragdag sa karaniwang awtorisasyon ng isang layer ng pag-verify ng pagkakakilanlan ng gumagamit. Hindi tulad ng purong OAuth 2.0, kung saan ang access token ay nagbibigay ng access sa mga mapagkukunan nang walang impormasyon tungkol sa gumagamit, ang OpenID Connect ay nagbabalik ng ID Token — JWT na may kumpirmadong data ng profile. Ayon sa datos ng OpenID Foundation, 2026, ang protokol ay sinusuportahan ng lahat ng pangunahing Identity Provider — Google, Apple, Microsoft at Auth0.

Mga Pangunahing

  • OpenID Connect — protokol ng pagpapatotoo sa ibabaw ng OAuth 2.0, nagbabalik ng ID Token
  • ID Token — JWT na may claims tungkol sa gumagamit: identifier, email, pangalan, avatar
  • Authorisation Code Flow — pangunahing daloy ng OIDC para sa mobile at server apps
  • Single Sign-On — gumagamit ay pumapasok nang isang beses sa pamamagitan ng Identity Provider at nakakakuha ng access sa lahat ng nakakonektang app
  • Discovery URL — karaniwang endpoint /.well-known/openid-configuration para sa pagkuha ng configuration ng provider

Ano ang OpenID Connect?

OpenID Connect (OIDC) — ay isang bukas na protokol ng pagpapatotoo na binuo bilang isang layer sa ibabaw ng OAuth 2.0. Istandardisa nito ang kulang sa OAuth 2.0: pag-verify ng pagkakakilanlan ng gumagamit. Kung ang OAuth 2.0 ay sumasagot sa tanong na “aling app ang may access?”, ang OIDC naman ay sumasagot sa tanong na “sino ba talaga ang gumagamit na ito?”.

Ang protokol ay gumagamit ng ID Token — JSON Web Token (JWT), na naglalaman ng isang set ng claims: natatanging identifier ng paksa, email, pangalan, avatar, mga timestamp ng pagpapalabas at pag-expire. Ang client app ay maaaring mag-verify ng ID Token nang cryptographically — nilagdaan ng server ang token gamit ang RS256 o ES256, at sinusuri ng client ang lagda gamit ang pampublikong susi na nakuha sa pamamagitan ng JWKS endpoint.

Ayon sa datos ng Auth0, 2025, mahigit 78% ng mobile apps na gumagamit ng third-party authentication ay nag-aapply ng OIDC sa pamamagitan ng Google Sign-In o Sign in with Apple. Ginagawa nitong de facto standard ang protokol para sa social login at corporate authentication.

Paano gumagana ang OpenID Connect

OpenID Connect ay nagdedefine ng maraming daloy (flows) depende sa uri ng client. Para sa mobile apps, ang pamantayan ay Authorisation Code Flow na may Proof Key for Code Exchange (PKCE) — nagbibigay ng proteksyon kahit walang client secret sa device.

Identity Provider at ang papel nito

Identity Provider (IdP) — ay ang server na nagsasagawa ng pagpapatotoo ng gumagamit at naglalabas ng mga token. Sa ecosystem ng OIDC, ang IdP ay nagbibigay ng dalawang pangunahing endpoint: Authorisation Endpoint para sa pag-login ng gumagamit at Token Endpoint para sa pagpapalit ng code sa mga token. Natutuklasan ng client ang mga address ng mga endpoint na ito sa pamamagitan ng Discovery URL — ang karaniwang landas /.well-known/openid-configuration, na nagbabalik ng JSON dokumento na may buong configuration ng provider.

Bawat IdP ay naglalathala ng sarili nitong JWKS (JSON Web Key Set) — set ng mga pampublikong susi para sa pag-verify ng lagda ng ID Token. Ini-cache ng client ang mga susi na ito at ginagamit para sa pag-verify ng bawat natanggap na token nang hindi kumokonsulta sa server.

Authorisation Code Flow na may PKCE

Authorisation Code Flow — ay isang prosesong may tatlong hakbang. Una, ang mobile app ay gumagawa ng code verifier (random na string na may habang 43–128 character) at ang hash nito — code challenge. Binuksan ng app ang browser o WebView na may URL na naglalaman ng client_id, redirect_uri, scope (openid profile email) at code challenge. Ipinapasok ng gumagamit ang kanyang mga kredensyal sa pahina ng IdP at kinukumpirma ang pahintulot. Ini-redirect ng IdP ang browser pabalik sa app na may authorisation code.

Sa ikalawang hakbang, ipinapadala ng app ang authorisation code, code verifier at client_id sa Token Endpoint ng server. Sinusuri ng server ang code verifier laban sa naka-store na code challenge at ibinabalik ang ID Token, Access Token at opsiyonal na Refresh Token. Sa ikatlong hakbang, vini-verify ng app ang ID Token: vina-validate ang lagda sa pamamagitan ng JWKS, sinusuri ang issuer (iss), audience (aud) at oras ng pag-expire (exp). Kung matagumpay ang pag-verify — ang gumagamit ay itinuturing na napatotohanan.

Inaalis ng PKCE (Proof Key for Code Exchange) ang kahinaan na likas sa karaniwang Authorisation Code Flow sa mga pampublikong client. Dahil hindi ligtas na maiimbak ng mobile app ang client secret, ang isang attacker na nakaharang sa authorisation code ay maaaring ipagpalit ito sa mga token. Niresolba ng Code verifier ang problemang ito: kahit na ang code ay maharang, kung wala ang orihinal na code verifier, imposible ang pagpapalit. Ang OAuth Security Best Practices (RFC 9700) ay nangangailangan ng PKCE para sa lahat ng pampublikong client, kabilang ang mobile apps.

ID Token at Access Token

Ang OpenID Connect ay nagbabalik ng dalawang pangunahing magkaibang token: ID Token at Access Token. ID Token — ay palaging JWT na maaaring basahin at i-verify nang nakapag-iisa ng client. Naglalaman ito ng impormasyon tungkol sa gumagamit at ginagamit para sa pagpapatotoo, hindi para sa pag-access sa API.

Istraktura ng ID Token

ID Token ay binubuo ng header, payload at signature, na naka-encode sa Base64 at pinaghihiwalay ng mga tuldok. Ang header ay naglalaman ng alg (algoritmo ng lagda) at kid (identifier ng susi). Ang payload ay may kasamang mandatory claims: iss (issuer — naglabas ng token), sub (subject — natatanging ID ng gumagamit), aud (audience — identifier ng client), exp (expiration), iat (issued at). Opsiyonal — name, email, picture, locale.

Halimbawa ng na-decode na payload ng ID Token mula sa Google:

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 — ay isang opaque token (arbitraryong string) o JWT na ipinapadala ng client sa mga kahilingan sa API. Hindi tulad ng ID Token, ang access token ay hindi inilaan para basahin ng client — ang format at nilalaman nito ay alam lamang ng resource server at ng authorization server. Ang Access Token ay may scope — paghihigpit ng mga karapatan sa pag-access — at maikling buhay, karaniwang 15–60 minuto.

Mga Pagkakaiba ng OpenID Connect at OAuth 2.0

OAuth 2.0 — ay isang balangkas ng awtorisasyon na nagdedefine kung paano nakakakuha ng access ang app sa mga mapagkukunan ng gumagamit. OpenID Connect — ay isang layer na nagdaragdag ng pagpapatotoo sa prosesong ito. Pangunahing pagkakaiba: Ang OAuth 2.0 ay hindi nagdedefine ng format ng token at hindi nagbibigay sa app ng paraan upang malaman kung sino talaga ang gumawa ng kahilingan.

ParameterOAuth 2.0OpenID Connect
LayuninAwtorisasyon ng pag-access sa mga mapagkukunanPagpapatotoo + awtorisasyon
Token ng pagkakakilanlanWalaID Token (JWT)
Scopeapi:read, api:writeopenid, profile, email
UserInfo endpointOpsiyonalIstandardisa
Single LogoutWalaEspesipikasyon ng OpenID Connect Session Management

Kailan pumili ng OpenID Connect

Ang OpenID Connect ay kinakailangan kapag kailangan ng app na makilala ang gumagamit, hindi lamang makakuha ng access sa kanyang datos. Kung gumagamit ka ng “Mag-login gamit ang Google” o “Sign in with Apple” — ito ay OIDC. Kung ang iyong app ay tumatawag sa third-party API sa ngalan ng gumagamit nang hindi kailangang malaman ang kanyang pagkakakilanlan — sapat na ang purong OAuth 2.0. Para sa mga corporate system na may Single Sign-On (SSO) ang pagpili ay malinaw: OpenID Connect lamang, dahil nagbibigay ito ng standardized logout at pamamahala ng sesyon.

Pagpapatupad ng OpenID Connect sa mobile apps

Ang pagsasama ng OpenID Connect sa isang mobile app ay nangangailangan ng pagpili ng angkop na library at tamang configuration ng daloy. Para sa Android ginagamit ang credential manager (AndroidX Credentials) o AppAuth library. Para sa iOS — AuthenticationServices framework na may ASWebAuthenticationSession.

Halimbawa ng code sa Kotlin (Android)

Sa ibaba ay isang halimbawa ng pagpapatakbo ng Authorisation Code Flow gamit ang AppAuth-Android library. Gumagawa ang app ng kahilingan sa awtorisasyon, binuksan ang browser para sa pag-login ng gumagamit at pinoproseso ang callback na may mga token.

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)
        }
    }
}

Halimbawa ng code sa Swift (iOS)

Ang ASWebAuthenticationSession mula sa Apple ay nagbibigay ng built-in na browser para sa OIDC flow na may suporta sa SSO sa pamamagitan ng iCloud Keychain. Ang sesyon ay sinisimulan sa URL ng awtorisasyon, at ang callback ay pinoproseso sa pamamagitan ng completion handler.

Sa pagpili ng library para sa OpenID Connect, isaalang-alang ang suporta sa PKCE na built-in: ang AppAuth-Android at AppAuth-iOS ay sumusuporta sa PKCE bilang default. Ang Firebase Authentication ay gumagamit ng OIDC sa ilalim ng hood para sa Google Sign-In, Sign in with Apple at Microsoft — hindi kailangan ng developer na manu-manong ipatupad ang daloy. Para sa corporate system na may sariling IdP (halimbawa, Keycloak o Okta), ang AppAuth ay nananatiling karaniwang pagpili na may ganap na kontrol sa configuration at paghawak ng error.

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()

Mga Madalas Itanong

Ano ang pagkakaiba ng OpenID Connect sa OAuth 2.0?

Ang OpenID Connect — ay isang layer sa ibabaw ng OAuth 2.0 na nagdaragdag ng pagpapatotoo. Ang OAuth 2.0 ay responsable lamang para sa awtorisasyon ng pag-access sa mga mapagkukunan. Ipinakilala ng OIDC ang ID Token — JWT na may data ng gumagamit, istandardisa ang UserInfo endpoint at nagdaragdag ng mga kakayahan ng Single Sign-On at logout.

Aling daloy ng OIDC ang angkop para sa mobile apps?

Para sa mobile apps, inirerekomenda ang Authorisation Code Flow na may PKCE. Hindi ito nangangailangan ng client secret, pinoprotektahan laban sa pagharang ng authorisation code at sinusuportahan ng lahat ng pangunahing Identity Provider. Ang Implicit Flow ay luma na at hindi dapat gamitin sa mga bagong proyekto.

Paano i-verify ang ID Token sa gilid ng client?

Ang ID Token ay vini-verify sa tatlong hakbang: pag-validate ng lagda sa pamamagitan ng pampublikong susi mula sa JWKS endpoint, pagsusuri ng claims (iss, aud, exp) at pag-decode ng payload. Karamihan sa mga SDK — AppAuth, MSAL, Google Sign-In — ay awtomatikong ginagawa ang pag-verify na ito kapag natanggap ang token.

Ano ang ibig sabihin ng scope “openid” sa isang kahilingan?

Scope openid — ay isang mandatoryong parameter na nag-iiba ng OIDC na kahilingan mula sa karaniwang OAuth 2.0. Kung wala ito, hindi magbabalik ng ID Token ang server. Ang mga karagdagang scope — profile, email, address — ay tumutukoy kung aling mga partikular na claims tungkol sa gumagamit ang isasama sa token.

Maaari bang gamitin ang OpenID Connect nang walang browser?

Sa teknikal — oo, sa pamamagitan ng Resource Owner Password Credentials flow, ngunit hindi ito inirerekomenda. Tinitiyak ng browser flow ang paghihiwalay ng mga kredensyal — hindi nakikita ng app ang password ng gumagamit. Ang Apple at Google ay nangangailangan ng browser authentication para sa kanilang mga serbisyo.

Buod

  • OpenID Connect — protokol ng pagpapatotoo sa ibabaw ng OAuth 2.0 na may ID Token sa JWT format
  • ID Token ay naglalaman ng napatotohanang claims tungkol sa gumagamit at nilagdaan ng server
  • Authorisation Code Flow na may PKCE — pamantayan at ligtas na daloy para sa mobile apps
  • Identity Provider ay naglalathala ng Discovery URL at JWKS para sa awtomatikong configuration ng client
  • OIDC ay sumusuporta sa Single Sign-On at standardized logout sa pagitan ng apps
  • AppAuth at AuthenticationServices — pangunahing library para sa Android at iOS ayon sa pagkakasunod
  • OpenID Connect ay ginagamit sa Google Sign-In, Sign in with Apple at corporate SSO solutions

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din