OAuth2 & OpenID Connect Deep Dive · บทเรียน

โฟลว์แบบแฝงด้วย OIDC

สำรวจโฟลว์แบบแฝงด้วย OIDC ทำความเข้าใจการส่งโทเค็น ID โดยตรงและผลกระทบด้านความปลอดภัยต่อแอปพลิเคชันหน้าเดียว

บทเรียน 2 จาก 411 ขั้นตอน

โฟลว์แบบแฝงด้วย OIDC เป็นบทเรียน OAuth2 & OpenID Connect Deep Dive ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน OAuth2 & OpenID Connect Deep Dive และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส OAuth2 & OpenID Connect Deep Dive มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

OIDC Implicit Flow Basics

What is the Implicit Flow with OpenID Connect (OIDC)? It's a way for web applications, especially Single-Page Applications (SPAs), to get identity information and access tokens directly from the authorization server.

It was designed for scenarios where a backend server couldn't securely store a client secret.

Direct Token Delivery

Unlike the Authorization Code Flow, the Implicit Flow doesn't involve an authorization code exchange with the authorization server's token endpoint.

Instead, the ID Token and Access Token are returned directly to the client's browser in the URL fragment after user authentication.

Requesting Tokens Directly

The client application initiates the flow by redirecting the user's browser to the Authorization Server's /authorize endpoint.

Key parameters include:

  • response_type=id_token token: Requests both an ID Token and an Access Token.
  • client_id: Identifies the client application.
  • redirect_uri: Where the user is sent back after authentication.
  • scope=openid profile: Specifies requested permissions, including openid for OIDC.
  • nonce: A unique string to prevent replay attacks.
https://auth.example.com/authorize?
  response_type=id_token%20token&
  client_id=my-spa-client&
  redirect_uri=https://app.example.com/callback&
  scope=openid%20profile&
  nonce=aRandomNonceValue&
  state=aRandomStateValue

Tokens in the URL Fragment

After the user successfully authenticates and grants consent, the Authorization Server redirects the user's browser back to the redirect_uri.

The tokens (ID Token and Access Token) are included directly in the URL's fragment part (after the # symbol).

The client-side JavaScript then reads and processes these tokens.

https://app.example.com/callback#
  id_token=eyJ...&
  access_token=eyJ...&
  token_type=Bearer&
  expires_in=3600&
  state=aRandomStateValue

Client-Side Token Processing

Since the tokens are in the URL fragment, they are accessible to client-side JavaScript. The browser does not send the fragment to the server.

The SPA extracts the id_token and access_token, validates them, and can then use the access_token to make requests to protected API resources.

public class TokenParser {
  public static void main(String[] args) {
    String urlFragment = "id_token=eyJ...&access_token=eyJ...&expires_in=3600";
    System.out.println("Processing URL fragment:");
    String[] params = urlFragment.split("&");
    for (String param : params) {
      String[] pair = param.split("=");
      if (pair.length == 2) {
        System.out.println(pair[0] + ": " + pair[1]);
      }
    }
    System.out.println("\nIn a real app, you'd validate these tokens!");
  }
}

Identity with the ID Token

The ID Token is a JSON Web Token (JWT) that contains claims about the authenticated user, such as their unique identifier, name, and email.

The client application validates this token to verify the user's identity and ensures it came from the expected Authorization Server.

This is the "identity layer" OpenID Connect adds to OAuth2.

Security Risk: Browser History

A major security concern with the Implicit Flow is that tokens are exposed in the browser's URL fragment.

This means they can be stored in browser history, server access logs (if the fragment is accidentally included), and potentially accessed by other scripts on the same page.

  • Browser History: Tokens might be saved, allowing unauthorized access if someone gains access to the browser history.
  • Referrer Headers: In some cases, tokens could leak via Referrer headers.

Security Risk: No Client Secret

The Implicit Flow is typically used by "public clients" (like SPAs) that cannot securely store a client secret.

This means the Authorization Server cannot authenticate the client application itself, only the user. This makes it vulnerable to certain attacks, such as token injection.

  • An attacker could potentially inject a malicious token.
  • There's no cryptographic proof that the client receiving the token is the one that initiated the request.

Discouraged & Replaced

Due to its inherent security weaknesses, the Implicit Flow is now largely deprecated for new implementations.

The OAuth 2.0 Security Best Current Practice recommends using the Authorization Code Flow with PKCE (Proof Key for Code Exchange) for public clients like SPAs and mobile apps.

PKCE provides a robust way to secure public clients without requiring a client secret.

Implicit Flow Quick Check

Which of the following is a primary security concern when using the OIDC Implicit Flow?

Implicit Flow Recap

We've explored the OIDC Implicit Flow, where identity and access tokens are returned directly in the URL fragment.

While it simplifies client-side access, its security risks, primarily token exposure in the URL and lack of client authentication, have led to its deprecation.

Always prefer the Authorization Code Flow with PKCE for public clients to ensure robust security.

เริ่มต้นได้ฟรี

เรียนรู้ OAuth2 & OpenID Connect Deep Dive ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

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

บทเรียน “โฟลว์แบบแฝงด้วย OIDC” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โฟลว์แบบแฝงด้วย OIDC” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส OAuth2 & OpenID Connect Deep Dive ให้อัปเกรดเป็น CoddyKit PRO คอร์ส OAuth2 & OpenID Connect Deep Dive มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โฟลว์แบบแฝงด้วย OIDC”

สำรวจโฟลว์แบบแฝงด้วย OIDC ทำความเข้าใจการส่งโทเค็น ID โดยตรงและผลกระทบด้านความปลอดภัยต่อแอปพลิเคชันหน้าเดียว คุณปฏิบัติ OAuth2 & OpenID Connect Deep Dive ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน OAuth2 & OpenID Connect Deep Dive หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน OAuth2 & OpenID Connect Deep Dive บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “โฟลว์แบบแฝงด้วย OIDC” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน OAuth2 & OpenID Connect Deep Dive นี้ได้ไหม

ได้ บทเรียน OAuth2 & OpenID Connect Deep Dive ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โฟลว์รหัสอนุญาตสิทธิ์ด้วย OIDC
  2. โฟลว์แบบแฝงด้วย OIDC
  3. โฟลว์แบบผสมด้วย OIDC
  4. การใช้ nonce เพื่อป้องกันการเล่นซ้ำ
← กลับไปที่ OAuth2 & OpenID Connect Deep Dive