OpenID Connect: คืออะไร โปรโตคอลการยืนยันตัวตนและการอนุญาต

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-04-05 เวลาอ่าน: 9 นาที

OpenID Connect เป็นโปรโตคอลการยืนยันตัวตนที่สร้างขึ้นบน OAuth 2.0 ซึ่งเพิ่มชั้นการตรวจสอบตัวตนผู้ใช้ให้กับการอนุญาตมาตรฐาน แตกต่างจาก OAuth 2.0 บริสุทธิ์ที่ access token ให้สิทธิ์เข้าถึงทรัพยากรโดยไม่มีข้อมูลผู้ใช้ OpenID Connect จะส่งคืน ID Token — JWT ที่มีข้อมูลโปรไฟล์ที่ได้รับการยืนยัน ตามข้อมูลจาก OpenID Foundation, 2026 โปรโตคอลนี้รองรับโดยผู้ให้บริการตัวตนหลักทั้งหมด — Google, Apple, Microsoft และ Auth0

ประเด็นสำคัญ

  • OpenID Connect — โปรโตคอลการยืนยันตัวตนบน OAuth 2.0 ที่ส่งคืน ID Token
  • ID Token — JWT ที่มี Claims ของผู้ใช้: ตัวระบุ, อีเมล, ชื่อ, รูปประจำตัว
  • Authorization Code Flow — โฟลว์ OIDC หลักสำหรับแอปมือถือและแอปเซิร์ฟเวอร์
  • Single Sign-On — ผู้ใช้เข้าสู่ระบบครั้งเดียวผ่านผู้ให้บริการตัวตนและเข้าถึงแอปพลิเคชันที่เชื่อมต่อทั้งหมด
  • Discovery URL — ปลายทางมาตรฐาน /.well-known/openid-configuration สำหรับรับการกำหนดค่าผู้ให้บริการ

OpenID Connect คืออะไร?

OpenID Connect (OIDC) เป็นโปรโตคอลการยืนยันตัวตนแบบเปิดที่สร้างขึ้นเป็นส่วนขยายบน OAuth 2.0 โดยทำให้สิ่งที่ OAuth 2.0 ขาดหายไปเป็นมาตรฐาน: การตรวจสอบตัวตนผู้ใช้ ถ้า OAuth 2.0 ตอบคำถาม “แอปพลิเคชันใดมีสิทธิ์เข้าถึง?” ดังนั้น OIDC จะตอบ “ผู้ใช้คนนี้คือใคร?”

โปรโตคอลใช้ ID Token — JSON Web Token (JWT) ที่มีชุดของ Claims: ตัวระบุหัวข้อที่ไม่ซ้ำกัน, อีเมล, ชื่อ, รูปประจำตัว, ประทับเวลาการออกและหมดอายุ แอปพลิเคชันไคลเอ็นต์สามารถตรวจสอบ ID Token ด้วยการเข้ารหัส — เซิร์ฟเวอร์ลงนามในโทเค็นด้วย RS256 หรือ ES256 และไคลเอ็นต์ตรวจสอบลายเซ็นกับคีย์สาธารณะที่ได้รับผ่านปลายทาง JWKS

ตามข้อมูลของ Auth0, 2025 แอปมือถือมากกว่า 78% ที่ใช้การยืนยันตัวตนของบุคคลที่สามใช้ OIDC ผ่าน Google Sign-In หรือ Sign in with Apple ซึ่งทำให้โปรโตคอลนี้เป็นมาตรฐานโดยพฤตินัยสำหรับการเข้าสู่ระบบทางสังคมและการยืนยันตัวตนขององค์กร

OpenID Connect ทำงานอย่างไร

OpenID Connect กำหนดโฟลว์หลายแบบขึ้นอยู่กับประเภทของไคลเอ็นต์ สำหรับแอปพลิเคชันมือถือ มาตรฐานคือ Authorization Code Flow พร้อม Proof Key for Code Exchange (PKCE) — ซึ่งให้ความปลอดภัยแม้ไม่มี client secret บนอุปกรณ์

ผู้ให้บริการตัวตนและบทบาทของมัน

ผู้ให้บริการตัวตน (IdP) คือเซิร์ฟเวอร์ที่ทำการยืนยันตัวตนผู้ใช้และออกโทเค็น ในระบบนิเวศ OIDC IdP มีปลายทางหลักสองแห่ง: Authorization Endpoint สำหรับให้ผู้ใช้เข้าสู่ระบบและ Token Endpoint สำหรับแลกเปลี่ยนรหัสเป็นโทเค็น ไคลเอ็นต์ค้นหาที่อยู่ของปลายทางเหล่านี้ผ่าน Discovery URL — เส้นทางมาตรฐาน /.well-known/openid-configuration ซึ่งส่งคืนเอกสาร JSON พร้อมการกำหนดค่าผู้ให้บริการทั้งหมด

แต่ละ IdP เผยแพร่ JWKS (JSON Web Key Set) — ชุดของคีย์สาธารณะสำหรับตรวจสอบลายเซ็น ID Token ไคลเอ็นต์แคชคีย์เหล่านี้และใช้เพื่อตรวจสอบแต่ละโทเค็นที่ได้รับโดยไม่ต้องติดต่อเซิร์ฟเวอร์

Authorization Code Flow กับ PKCE

Authorization Code Flow เป็นกระบวนการสามขั้นตอน ขั้นแรก แอปพลิเคชันมือถือสร้าง code verifier (สตริงสุ่มยาว 43–128 ตัวอักษร) และแฮชของมัน — code challenge แอปพลิเคชันเปิดเบราว์เซอร์หรือ WebView ด้วย URL ที่มี client_id, redirect_uri, scope (openid profile email) และ code challenge ผู้ใช้ป้อนข้อมูลรับรองบนหน้า IdP และยืนยันความยินยอม IdP เปลี่ยนเส้นทางเบราว์เซอร์กลับไปยังแอปพลิเคชันพร้อม authorization code

ในขั้นตอนที่สอง แอปพลิเคชันส่ง authorization code, code verifier และ client_id ไปยัง Token Endpoint ของเซิร์ฟเวอร์ เซิร์ฟเวอร์ตรวจสอบ code verifier กับ code challenge ที่เก็บไว้และส่งคืน ID Token, Access Token และอาจส่งคืน Refresh Token ในขั้นตอนที่สาม แอปพลิเคชัน ตรวจสอบ ID Token: ตรวจสอบความถูกต้องของลายเซ็นกับ JWKS, ตรวจสอบ issuer (iss), audience (aud) และเวลาหมดอายุ (exp) หากการตรวจสอบผ่าน ผู้ใช้จะถือว่าได้รับการยืนยันตัวตนแล้ว

PKCE (Proof Key for Code Exchange) ขจัดช่องโหว่ที่มีอยู่ใน Authorization Code Flow มาตรฐานสำหรับไคลเอ็นต์สาธารณะ เนื่องจากแอปพลิเคชันมือถือไม่สามารถจัดเก็บ client secret ได้อย่างปลอดภัย ผู้โจมตีที่สกัดกั้น authorization code อาจแลกเปลี่ยนเป็นโทเค็นได้ Code verifier แก้ปัญหานี้: แม้ว่ารหัสจะถูกสกัดกั้น หากไม่มี code verifier ดั้งเดิม การแลกเปลี่ยนจะเป็นไปไม่ได้ OAuth Security Best Practices (RFC 9700) กำหนดให้ใช้ PKCE สำหรับไคลเอ็นต์สาธารณะทั้งหมด รวมถึงแอปพลิเคชันมือถือ

ID Token และ Access Token

OpenID Connect ส่งคืนโทเค็นที่แตกต่างกันโดยพื้นฐานสองแบบ: ID Token และ Access Token ID Token เป็น JWT เสมอที่ไคลเอ็นต์สามารถอ่านและตรวจสอบได้ด้วยตนเอง โดยมีข้อมูลผู้ใช้และใช้สำหรับการยืนยันตัวตน ไม่ใช่สำหรับการเข้าถึง API

โครงสร้างของ ID Token

ID Token ประกอบด้วย header, payload และ signature ที่เข้ารหัสใน Base64 และคั่นด้วยจุด header มี alg (อัลกอริทึมลายเซ็น) และ kid (ตัวระบุคีย์) payload รวมถึง Claims ที่จำเป็น: iss (issuer), sub (subject — ID ผู้ใช้ที่ไม่ซ้ำกัน), aud (audience — ตัวระบุไคลเอ็นต์), exp (expiration), iat (issued at) Claims ที่ไม่บังคับรวมถึง name, email, picture, locale

ตัวอย่าง payload ของ ID Token ที่ถอดรหัสจาก 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 คือโทเค็นทึบแสง (สตริงตามอำเภอใจ) หรือ JWT ที่ไคลเอ็นต์ส่งในคำขอ API แตกต่างจาก ID Token ตรงที่ access token ไม่ได้ออกแบบมาให้ไคลเอ็นต์อ่าน — รูปแบบและเนื้อหาของมันรู้เฉพาะเซิร์ฟเวอร์ทรัพยากรและเซิร์ฟเวอร์อนุญาตเท่านั้น Access Token มีขอบเขต (scope) — ข้อจำกัดสิทธิ์ — และอายุสั้น โดยทั่วไป 15–60 นาที

ความแตกต่างระหว่าง OpenID Connect และ OAuth 2.0

OAuth 2.0 เป็นกรอบงานการอนุญาตที่กำหนดว่าแอปพลิเคชันเข้าถึงทรัพยากรของผู้ใช้ได้อย่างไร OpenID Connect เป็นส่วนขยายที่เพิ่มการยืนยันตัวตนให้กับกระบวนการนี้ ความแตกต่างหลัก: OAuth 2.0 ไม่ได้กำหนดรูปแบบโทเค็นและไม่ได้ให้วิธีแก่แอปพลิเคชันในการรู้ว่าใครเป็นผู้ทำคำขอ

พารามิเตอร์OAuth 2.0OpenID Connect
วัตถุประสงค์การอนุญาตสำหรับการเข้าถึงทรัพยากรการยืนยันตัวตน + การอนุญาต
โทเค็นตัวตนไม่มีID Token (JWT)
ขอบเขต (Scope)api:read, api:writeopenid, profile, email
UserInfo Endpointไม่บังคับเป็นมาตรฐาน
การออกจากระบบครั้งเดียวไม่มีข้อกำหนด OpenID Connect Session Management

เมื่อใดควรเลือก OpenID Connect

OpenID Connect จำเป็นเมื่อแอปพลิเคชันต้องการ ระบุตัวตนผู้ใช้ ไม่ใช่แค่เข้าถึงข้อมูลของพวกเขา หากคุณใช้ “เข้าสู่ระบบด้วย Google” หรือ “เข้าสู่ระบบด้วย Apple” — นั่นคือ OIDC หากแอปพลิเคชันของคุณเรียก API ของบุคคลที่สามในนามของผู้ใช้โดยไม่จำเป็นต้องรู้ตัวตนของพวกเขา — OAuth 2.0 บริสุทธิ์ก็เพียงพอ สำหรับระบบองค์กรที่มี Single Sign-On (SSO) ตัวเลือกนั้นชัดเจน: มีเพียง OpenID Connect เท่านั้น เนื่องจากให้การออกจากระบบที่เป็นมาตรฐานและการจัดการเซสชัน

การนำ OpenID Connect ไปใช้ในแอปพลิเคชันมือถือ

การผสาน OpenID Connect เข้ากับแอปพลิเคชันมือถือต้องเลือกไลบรารีที่เหมาะสมและกำหนดค่าโฟลว์อย่างถูกต้อง สำหรับ Android ให้ใช้ ตัวจัดการข้อมูลรับรอง (AndroidX Credentials) หรือไลบรารี AppAuth สำหรับ iOS ให้ใช้เฟรมเวิร์ก AuthenticationServices กับ ASWebAuthenticationSession

ตัวอย่างโค้ด Kotlin (Android)

ด้านล่างเป็นตัวอย่างการเริ่ม Authorization Code Flow โดยใช้ไลบรารี AppAuth-Android แอปพลิเคชันสร้างคำขออนุญาต เปิดเบราว์เซอร์สำหรับให้ผู้ใช้เข้าสู่ระบบ และจัดการ callback กับโทเค็น

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

ASWebAuthenticationSession ของ Apple มีเบราว์เซอร์ในตัวสำหรับโฟลว์ OIDC พร้อมรองรับ SSO ผ่าน iCloud Keychain เซสชันเริ่มต้นด้วย URL การอนุญาต และ callback จะถูกจัดการผ่าน completion handler

เมื่อเลือกไลบรารีสำหรับ OpenID Connect ให้พิจารณาการรองรับ PKCE ในตัว: AppAuth-Android และ AppAuth-iOS รองรับ PKCE โดยค่าเริ่มต้น Firebase Authentication ใช้ OIDC ภายในสำหรับ Google Sign-In, Sign in with Apple และ Microsoft — นักพัฒนาไม่จำเป็นต้องใช้โฟลว์ด้วยตนเอง สำหรับระบบองค์กรที่มี IdP ที่กำหนดเอง (เช่น Keycloak หรือ Okta) AppAuth ยังคงเป็นตัวเลือกมาตรฐานพร้อมการควบคุมการกำหนดค่าและการจัดการข้อผิดพลาดอย่างเต็มที่

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

คำถามที่พบบ่อย

OpenID Connect แตกต่างจาก OAuth 2.0 อย่างไร?

OpenID Connect เป็นส่วนขยายบน OAuth 2.0 ที่เพิ่ม การยืนยันตัวตน OAuth 2.0 จัดการเฉพาะการอนุญาตสำหรับการเข้าถึงทรัพยากร OIDC นำเสนอ ID Token — JWT พร้อมข้อมูลผู้ใช้ ทำให้ UserInfo endpoint เป็นมาตรฐาน และเพิ่มความสามารถ Single Sign-On และการออกจากระบบ

โฟลว์ OIDC ใดที่เหมาะกับแอปพลิเคชันมือถือ?

สำหรับแอปพลิเคชันมือถือ แนะนำให้ใช้ Authorization Code Flow กับ PKCE ไม่ต้องใช้ client secret ป้องกันการสกัดกั้น authorization code และรองรับโดยผู้ให้บริการตัวตนหลักทั้งหมด Implicit Flow ล้าสมัยแล้วและไม่ควรใช้ในโปรเจกต์ใหม่

จะตรวจสอบ ID Token บนไคลเอ็นต์ได้อย่างไร?

ID Token ถูกตรวจสอบในสามขั้นตอน: การตรวจสอบความถูกต้องของลายเซ็นโดยใช้คีย์สาธารณะจาก ปลายทาง JWKS, การตรวจสอบ Claims (iss, aud, exp) และการถอดรหัส payload SDK ส่วนใหญ่ — AppAuth, MSAL, Google Sign-In — ดำเนินการตรวจสอบนี้โดยอัตโนมัติเมื่อได้รับโทเค็น

ขอบเขต “openid” ในคำขอคืออะไร?

ขอบเขต openid เป็นพารามิเตอร์ที่จำเป็นซึ่งแยกความแตกต่างของคำขอ OIDC จากคำขอ OAuth 2.0 ทั่วไป หากไม่มี เซิร์ฟเวอร์จะไม่ส่งคืน ID Token ขอบเขตเพิ่มเติม — profile, email, address — กำหนดว่า Claims เฉพาะใดของผู้ใช้จะรวมอยู่ในโทเค็น

สามารถใช้ OpenID Connect โดยไม่มีเบราว์เซอร์ได้หรือไม่?

ในทางเทคนิคสามารถทำได้ ผ่านโฟลว์ Resource Owner Password Credentials แต่ไม่แนะนำ โฟลว์เบราว์เซอร์ให้การแยกข้อมูลรับรอง — แอปพลิเคชันไม่เห็นรหัสผ่านของผู้ใช้ Apple และ Google ต้องการการยืนยันตัวตนผ่านเบราว์เซอร์สำหรับบริการของตน

สรุป

  • OpenID Connect — โปรโตคอลการยืนยันตัวตนบน OAuth 2.0 พร้อม ID Token ในรูปแบบ JWT
  • ID Token มี Claims ผู้ใช้ที่ได้รับการยืนยันและลงนามโดยเซิร์ฟเวอร์
  • Authorization Code Flow กับ PKCE — โฟลว์มาตรฐานและปลอดภัยสำหรับแอปพลิเคชันมือถือ
  • ผู้ให้บริการตัวตน เผยแพร่ Discovery URL และ JWKS สำหรับการกำหนดค่าไคลเอ็นต์อัตโนมัติ
  • OIDC รองรับ Single Sign-On และการออกจากระบบที่เป็นมาตรฐานระหว่างแอปพลิเคชัน
  • AppAuth และ AuthenticationServices เป็นไลบรารีหลักสำหรับ Android และ iOS ตามลำดับ
  • OpenID Connect ใช้ใน Google Sign-In, Sign in with Apple และโซลูชัน SSO ขององค์กร

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม