OpenID là gì? 3 cơ chế giúp đăng nhập an toàn & tiện lợi

  • Home
  • Blog
  • OpenID là gì? 3 cơ chế giúp đăng nhập an toàn & tiện lợi
DateTh9 18, 2025

5/5 - (1 bình chọn)

Bạn có bao giờ cảm thấy mệt mỏi khi phải tạo hàng tá tài khoản và nhớ vô số mật khẩu cho mỗi website, ứng dụng mình sử dụng? Điều này không chỉ gây bất tiện mà còn tiềm ẩn rủi ro bảo mật đáng kể. Bài viết này của thuemaychugiare sẽ cùng bạn đi sâu tìm hiểu OpenID là gì, các thành phần chính của OpenID Connect, đồng thời tìm hiểu mối quan hệ giữa OpenID Connect và OAuth2 qua bài viết sau.

OpenID là gì?

OpenID là một tiêu chuẩn kỹ thuật giúp bạn sử dụng một tài khoản duy nhất để đăng nhập vào nhiều website khác nhau mà không cần tạo mới hay nhớ nhiều mật khẩu. Nó hoạt động như một “chìa khóa vạn năng” cho danh tính trực tuyến của bạn. Mục đích chính của OpenID là đơn giản hóa quy trình đăng nhập và tăng cường bảo mật.

OpenID xuất hiện lần đầu vào năm 2005. Ngay sau đó, một số “ông lớn” công nghệ như Google hay Yahoo đã nhanh chóng hỗ trợ, cho phép người dùng dùng chính tài khoản của họ để đăng nhập vào các trang web khác.

Ý tưởng cốt lõi rất đơn giản mà hữu ích: thay vì để mỗi trang web tự lưu giữ thông tin đăng nhập (và có nguy cơ bị tấn công), người dùng chỉ cần tin tưởng một nhà cung cấp OpenID duy nhất. Khi bạn truy cập vào một website, trang này sẽ “hỏi” nhà cung cấp đó để xác thực danh tính của bạn.

OpenID là gì

Tổng Quan OpenID

Dù hấp dẫn, phiên bản OpenID cũ vẫn tồn tại một số hạn chế, đặc biệt là khó khăn cho nhà phát triển trong triển khai và việc truyền tải thông tin người dùng chưa thật sự hiệu quả. Chính vì vậy, một phiên bản cải tiến hơn đã được giới thiệu: OpenID Connect.

Ngày nay, khi nhắc đến OpenID, đa số chúng ta đều đang nói đến OpenID Connect – chuẩn xác thực hiện đại, phổ biến toàn cầu, giúp giải quyết nỗi lo “quên mật khẩu” hay “tạo quá nhiều tài khoản” của hàng triệu người dùng.

OpenID Connect là gì?

OpenID Connect (OIDC) là một lớp xác thực danh tính được xây dựng dựa trên giao thức ủy quyền OAuth 2.0. Nó cho phép các ứng dụng khách (client applications) xác minh danh tính người dùng dựa trên quá trình xác thực từ máy chủ ủy quyền (authorization server).

Đồng thời, OIDC cũng cung cấp các thông tin cơ bản về người dùng theo chuẩn chung và có khả năng tương tác cao.

Khái niệm OpenID Connect

Khái niệm OpenID Connect

Cách thức hoạt động của OpenID Connect

OpenID Connect (OIDC) hoạt động dựa trên cơ chế xác thực danh tính bằng token. Thay vì phải chia sẻ mật khẩu cho nhiều ứng dụng, người dùng chỉ cần xác thực một lần với OpenID Provider (ví dụ: Google, Facebook), sau đó các ứng dụng khác (Relying Party) sẽ dựa vào ID Token để nhận diện danh tính.

Các bước cơ bản trong quy trình OIDC (Authorization Code Flow):

  1. Người dùng yêu cầu đăng nhập: Truy cập ứng dụng (Relying Party) và chọn “Đăng nhập bằng Google/Facebook…”.
  2. Relying Party gửi yêu cầu xác thực: Ứng dụng chuyển hướng trình duyệt đến OpenID Provider kèm theo thông tin như: client_id, scope, redirect_uri.
  3. Người dùng xác thực và đồng ý chia sẻ dữ liệu: Người dùng đăng nhập vào OpenID Provider và cấp quyền chia sẻ thông tin cơ bản (tên, email…).
  4. OpenID Provider trả về Authorization Code: Sau khi xác thực thành công, trình duyệt được chuyển ngược lại ứng dụng kèm theo một mã ủy quyền.
  5. Relying Party đổi code lấy tokens: Ứng dụng gửi mã ủy quyền này đến OpenID Provider để nhận về:
    • ID Token: Chứa thông tin xác thực danh tính (ở dạng JWT).
    • Access Token: Cho phép truy cập tài nguyên đã được cấp quyền.
    • Refresh Token (tùy chọn): Dùng để gia hạn Access Token.
  6. Ứng dụng xác minh và đăng nhập người dùng: Relying Party kiểm tra tính hợp lệ của ID Token (chữ ký số, thời hạn, nguồn phát hành). Nếu hợp lệ, người dùng được đăng nhập và tạo phiên làm việc an toàn.

OpenID Connect và OAuth2 có mối quan hệ như thế nào?

Để hiểu rõ OpenID là gì trong bối cảnh hiện đại, chúng ta cần phải hiểu mối quan hệ giữa OpenID Connect (OIDC) và OAuth 2.0. Đây là hai khái niệm thường bị nhầm lẫn hoặc hiểu sai, nhưng thực tế chúng có mối quan hệ bổ trợ cho nhau.

OAuth 2.0 là gì?

OAuth 2.0 (Open Authorization 2.0) là một giao thức ủy quyền. Mục đích chính của nó là cho phép một ứng dụng cấp quyền truy cập vào tài nguyên được bảo vệ của người dùng trên một dịch vụ khác, mà không cần chia sẻ mật khẩu của người dùng đó.

Ví dụ: Khi bạn cho phép một ứng dụng chỉnh sửa ảnh truy cập vào Google Photos của mình, bạn đang sử dụng OAuth 2.0. Ứng dụng chỉnh sửa ảnh sẽ nhận được một “quyền” (token) để truy cập ảnh của bạn, nhưng nó không bao giờ biết mật khẩu tài khoản Google của bạn. OAuth 2.0 trả lời câu hỏi: “Bạn có quyền làm gì trên tài nguyên của tôi không?”

OpenID Connect (OIDC) là gì?

Như đã đề cập ở trên, OIDC là một lớp xác thực được xây dựng trên nền tảng của OAuth 2.0. OIDC mở rộng OAuth 2.0 bằng cách thêm khả năng xác minh danh tính của người dùng cuối.

Ví dụ: Khi bạn đăng nhập vào một trang web bằng tài khoản Google của mình, và trang web đó biết bạn là ai (tên, email), đó là nhờ OIDC. OIDC trả lời câu hỏi: “Bạn là ai?”

Mối quan hệ:

  • OAuth 2.0 tập trung vào ủy quyền (Authorization): Cho phép một ứng dụng truy cập vào các tài nguyên cụ thể của bạn (ví dụ: danh bạ, ảnh, lịch) trên một dịch vụ khác.
  • OpenID Connect tập trung vào xác thực (Authentication): Xác minh danh tính của bạn.
Mối quan hệ giữa OpenID Connect và OAuth2

Mối quan hệ giữa OpenID Connect và OAuth2

Hãy tưởng tượng: OAuth 2.0 giống như việc nhận một chiếc vé vào cửa để lấy đồ trong tủ, người gác cổng chỉ biết có “ai đó” được phép lấy. OpenID Connect thì khác, nó xác nhận chính xác bạn là ai trước khi trao vé.

Vì được xây dựng trên OAuth 2.0, OIDC tận dụng cơ chế bảo mật sẵn có và bổ sung ID Token để mang thông tin nhận dạng, giúp xử lý cả xác thực và ủy quyền trong cùng một framework.

Các thành phần chính trong OpenID Connect

Để hiểu sâu hơn về việc OpenID là gì và cách nó hoạt động, chúng ta cần làm quen với các thành phần cốt lõi của OpenID Connect. Các thành phần này tương tác với nhau trong một luồng nhất định để hoàn thành quá trình xác thực.

Các thành phần chính của OIDC (OpenID Connect) gồm có:

  • Người dùng (User): Là cá nhân hoặc dịch vụ cần truy cập ứng dụng mà không cần tạo tài khoản mới hoặc nhập username/password.
  • Máy khách (Client): Phần mềm như website hoặc ứng dụng yêu cầu mã thông báo để xác thực người dùng hoặc truy cập tài nguyên.
  • Bên tin cậy (Relying Party): Ứng dụng sử dụng nhà cung cấp OpenID để xác thực người dùng.
  • Nhà cung cấp OpenID (OpenID Provider – OP): Ứng dụng nơi người dùng đã có tài khoản, chịu trách nhiệm xác thực người dùng và cung cấp thông tin xác thực cho bên tin cậy.
  • Mã thông báo danh tính (ID Token): Chứa dữ liệu danh tính như định danh người dùng và kết quả xác thực, thường ở định dạng JWT, có thể bao gồm các thông tin như tên, email.
  • Quy trình xác thực (Authentication): Quy trình xác minh người dùng chính là họ đã khai báo, đảm bảo tính xác thực trong môi trường OIDC.

Ngoài ra, OIDC còn sử dụng các loại mã thông báo khác như Access Token và Refresh Token để hỗ trợ quản lý quyền truy cập và làm mới phiên đăng nhập.

Các luồng trong OpenID Connect

Luồng OpenID Connect là chuỗi các bước mà các bên tham gia (người dùng, Relying Party, OpenID Provider) thực hiện để hoàn thành quá trình xác thực danh tính. Có nhiều loại luồng khác nhau trong OIDC, nhưng phổ biến nhất là Authorization Code Flow vì tính bảo mật cao và phù hợp với nhiều loại ứng dụng.

Các bước chi tiết trong một luồng OIDC điển hình (Authorization Code Flow)

Hãy cùng thuemaychugiare khám phá các bước trong Authorization Code Flow:

  • Người dùng yêu cầu đăng nhập:
    • Người dùng truy cập vào ứng dụng/website của Relying Party (ví dụ: một dịch vụ của thuemaychugiare) và chọn “Đăng nhập bằng tài khoản Google” (Google đóng vai trò là OpenID Provider).
  • Relying Party gửi yêu cầu xác thực:
    • Relying Party chuyển hướng trình duyệt của người dùng đến trang đăng nhập của OpenID Provider. Yêu cầu này bao gồm các thông tin như:
      • client_id: Mã định danh của Relying Party.
      • response_type: Loại phản hồi mong muốn (ví dụ: code cho Authorization Code Flow).
      • scope: Phạm vi thông tin mà Relying Party muốn truy cập (ví dụ: openid profile email để yêu cầu ID Token và thông tin cơ bản của người dùng).
      • redirect_uri: URL mà OpenID Provider sẽ gửi phản hồi về sau khi xác thực.
      • state: Một giá trị ngẫu nhiên do Relying Party tạo ra để chống lại các cuộc tấn công CSRF (Cross-Site Request Forgery).
      • nonce: Một giá trị ngẫu nhiên khác để gắn với ID Token, chống lại các cuộc tấn công Replay Attack.
  • Người dùng xác thực và cấp quyền:
    • Tại trang của OpenID Provider, người dùng nhập tên đăng nhập và mật khẩu (hoặc sử dụng các phương thức xác thực khác).
    • Sau khi xác thực thành công, OpenID Provider sẽ hỏi người dùng có đồng ý cho Relying Party truy cập các thông tin được yêu cầu (tức là các scope đã chỉ định) hay không.
    • Người dùng đồng ý.
  • OpenID Provider gửi Authorization Code:
    • OpenID Provider chuyển hướng trình duyệt của người dùng trở lại redirect_uri của Relying Party, kèm theo một code (mã ủy quyền) và giá trị state ban đầu.
  • Relying Party trao đổi Authorization Code lấy Tokens:
    • Relying Party nhận được code. Ngay lập tức, nó gửi yêu cầu đến endpoint Token của OpenID Provider (thực hiện ở backend server, không phải qua trình duyệt) để trao đổi code này lấy các token. Yêu cầu này bao gồm:
      • grant_type: authorization_code.
      • code: Mã ủy quyền nhận được ở bước trước.
      • redirect_uri: Phải khớp với redirect_uri đã dùng ở bước 2.
      • client_id và client_secret: Mã định danh và khóa bí mật của Relying Party (để xác thực Relying Party với OpenID Provider).
  • OpenID Provider phản hồi bằng Tokens:
    • Nếu mọi thứ hợp lệ, OpenID Provider sẽ phản hồi bằng một tập hợp các token:
      • ID Token: Chứa thông tin xác thực danh tính người dùng.
      • Access Token: Cấp quyền truy cập vào các tài nguyên.
      • Refresh Token (tùy chọn): Để gia hạn Access Token.
  • Relying Party xác minh và đăng nhập người dùng:
    • Relying Party nhận được các token. Bước quan trọng nhất là nó phải xác minh tính hợp lệ của ID Token (kiểm tra chữ ký số, thời gian hết hạn, iss, aud, nonce).
    • Nếu ID Token hợp lệ, Relying Party đã xác định được danh tính người dùng.
    • Relying Party tạo phiên đăng nhập cho người dùng và cho phép họ truy cập vào ứng dụng/website.

Quá trình này nghe có vẻ phức tạp, nhưng về mặt người dùng, nó chỉ diễn ra trong vài cú click và được xử lý tự động bởi trình duyệt và các dịch vụ.

Cách xác minh danh tính bằng OIDC

Khi Relying Party (ứng dụng/website của bạn) nhận được ID Token từ OpenID Provider, nó không chỉ đơn thuần tin tưởng vào nội dung của token. Để đảm bảo tính bảo mật và xác thực, Relying Party phải thực hiện một loạt các bước xác minh ID Token. Điều này đảm bảo rằng token là hợp lệ, chưa bị giả mạo và đến từ đúng nhà cung cấp.

Các bước xác minh danh tính điển hình bao gồm:

  1. Kiểm tra chữ ký số: ID Token là một JWT và được ký số bởi OpenID Provider. Relying Party phải sử dụng khóa công khai của OpenID Provider để xác minh chữ ký này. Nếu chữ ký không khớp, ID Token đã bị giả mạo hoặc thay đổi.
  2. Kiểm tra iss (Issuer): Xác nhận rằng giá trị iss trong ID Token khớp với URL của OpenID Provider mà Relying Party mong đợi. Điều này đảm bảo token đến từ đúng nguồn.
  3. Kiểm tra aud (Audience): Xác nhận rằng giá trị aud trong ID Token khớp với client_id của Relying Party. Điều này đảm bảo token được cấp riêng cho ứng dụng của bạn, không phải cho ứng dụng khác.
  4. Kiểm tra exp (Expiration Time): Đảm bảo ID Token chưa hết hạn. Nếu token đã hết hạn, nó không còn hợp lệ.
  5. Kiểm tra iat (Issued At Time): Mặc dù không bắt buộc để từ chối token, việc kiểm tra iat giúp đảm bảo token không được cấp ở một thời điểm quá xa trong quá khứ.
  6. Kiểm tra nonce (nếu có): Nếu Relying Party đã gửi giá trị nonce trong yêu cầu xác thực ban đầu, nó phải khớp với giá trị nonce trong ID Token. Điều này giúp ngăn chặn các cuộc tấn công replay attack.
  7. Kiểm tra azp (Authorized Party – nếu có): Nếu ID Token có trường azp, nó phải khớp với client_id của Relying Party.

Nếu tất cả các bước xác minh này đều thành công, Relying Party có thể tin tưởng vào thông tin danh tính của người dùng chứa trong ID Token và tạo phiên đăng nhập cho họ. Quá trình này hoàn toàn tự động và diễn ra rất nhanh chóng ở phía máy chủ của ứng dụng.

Lợi ích của việc sử dụng OpenID Connect

Sau khi tìm hiểu sâu về OpenID là gì và cách OpenID Connect hoạt động, chúng ta có thể thấy rõ những lợi ích vượt trội mà nó mang lại cho cả người dùng cuối và các nhà phát triển/chủ website, đặc biệt là các giải pháp từ thuemaychugiare.

Đối với người dùng cuối

  • Đăng nhập tiện lợi hơn: Không còn phải tạo và nhớ hàng tá tài khoản/mật khẩu mới cho mỗi trang web. Người dùng chỉ cần sử dụng tài khoản của một OpenID Provider tin cậy (như Google, Facebook) để đăng nhập vào nhiều dịch vụ.
  • Tăng cường bảo mật: Thông tin đăng nhập của người dùng được quản lý bởi một OpenID Provider lớn, chuyên nghiệp về bảo mật. Điều này giảm thiểu nguy cơ bị đánh cắp thông tin đăng nhập khi nhiều trang web lưu trữ mật khẩu của bạn. Nếu một trang web bị tấn công, thông tin đăng nhập chính của bạn vẫn an toàn.
  • Kiểm soát thông tin cá nhân: Người dùng có quyền đồng ý hoặc từ chối việc chia sẻ thông tin cá nhân nào với Relying Party. Quá trình này minh bạch và rõ ràng.
  • Trải nghiệm người dùng mượt mà: Việc đăng nhập nhanh chóng, liền mạch giúp người dùng có trải nghiệm tốt hơn khi sử dụng các dịch vụ trực tuyến.

Đối với nhà phát triển và chủ website/ứng dụng (Relying Party)

  • Đơn giản hóa quá trình xác thực: Không cần phải tự xây dựng và quản lý một hệ thống xác thực người dùng phức tạp từ đầu. Việc này tốn kém thời gian, công sức và dễ phát sinh lỗi bảo mật. OIDC cung cấp một tiêu chuẩn đã được kiểm chứng.
  • Giảm gánh nặng bảo mật: Các vấn đề như lưu trữ mật khẩu an toàn, xử lý mã hóa, chống tấn công brute-force sẽ được giao cho OpenID Provider – các chuyên gia trong lĩnh vực này. Điều này giúp giảm rủi ro bảo mật cho ứng dụng của bạn.
  • Tăng tỷ lệ chuyển đổi: Người dùng thường ngần ngại khi phải tạo tài khoản mới. Việc cung cấp tùy chọn “đăng nhập bằng tài khoản sẵn có” giúp tăng khả năng người dùng tiếp cận và sử dụng dịch vụ của bạn.
  • Tiêu chuẩn hóa: OIDC là một tiêu chuẩn mở, được áp dụng rộng rãi. Điều này giúp các nhà phát triển dễ dàng tích hợp, tìm kiếm tài liệu và hỗ trợ cộng đồng.
  • Truy cập thông tin người dùng hiệu quả: OIDC cho phép Relying Party nhận được các thông tin cơ bản của người dùng (tên, email, v.v.) một cách an toàn và có cấu trúc thông qua ID Token, giúp cá nhân hóa trải nghiệm.
  • Phù hợp với nhiều loại ứng dụng: OIDC hỗ trợ nhiều loại luồng khác nhau, phù hợp với các ứng dụng web truyền thống, ứng dụng một trang (SPA), ứng dụng di động và các dịch vụ backend.
Lợi ích của việc sử dụng OpenID Connect

Lợi ích của việc sử dụng OpenID Connect

OpenID Connect có phải là tương lai của xác thực danh tính không?

Liệu OpenID Connect (OIDC) có phải là tương lai duy nhất của xác thực danh tính? Câu trả lời là không. OIDC chắc chắn giữ vai trò quan trọng, nhưng bức tranh toàn cảnh về xác thực đang ngày càng đa dạng và liên tục thay đổi.

Hiện tại, OIDC đã trở thành nền tảng của nhiều hệ thống đăng nhập lớn, nhờ khả năng cân bằng giữa linh hoạt, bảo mật và mở rộng. Tuy vậy, công nghệ không ngừng phát triển, và nhiều xu hướng mới đang xuất hiện để bổ trợ hoặc xử lý những khía cạnh khác của xác thực.

tương lai của xác thực danh tính

tương lai của xác thực danh tính

Passkeys (được thúc đẩy bởi FIDO Alliance)

Passkeys là công nghệ mới thay thế mật khẩu bằng sinh trắc học (vân tay, khuôn mặt) hoặc mã PIN trên thiết bị. Nó mang lại trải nghiệm đăng nhập tiện lợi, bảo mật cao và chống lại tấn công phishing. Google, Apple và Microsoft hiện đều đang đẩy mạnh hỗ trợ công nghệ này.

Dù loại bỏ mật khẩu, Passkeys vẫn cần một giao thức để truyền tải thông tin xác thực. Lúc này, OpenID Connect (OIDC) có thể đóng vai trò trung gian, đảm bảo quá trình xác thực diễn ra an toàn và liền mạch.

Xác thực đa yếu tố (MFA)

Dù sử dụng OpenID Connect hay mật khẩu truyền thống, việc thêm một lớp bảo mật thứ hai (như mã OTP gửi về điện thoại) luôn được khuyến khích để tăng cường an toàn cho tài khoản.

Zero Trust Architecture

Một mô hình bảo mật mà trong đó không có thực thể nào (người dùng, thiết bị, ứng dụng) được mặc định tin cậy, ngay cả khi chúng đã ở trong mạng nội bộ. Mọi yêu cầu truy cập đều phải được xác minh nghiêm ngặt.

Tóm lại, OpenID Connect vẫn sẽ giữ vai trò quan trọng trong xác thực danh tính trực tuyến, nhờ khả năng cung cấp một framework vừa mạnh mẽ vừa linh hoạt mà nhiều hệ thống đang tin dùng. Song song đó, những công nghệ mới như Passkeys hứa hẹn sẽ thay thế mật khẩu truyền thống. Khi kết hợp cùng OIDC, chúng sẽ hình thành một hệ sinh thái đăng nhập an toàn và tiện lợi hơn cho người dùng.

Tổng kết về OpenID Connect

Qua bài viết này, chúng ta đã cùng thuemaychugiare tìm hiểu cặn kẽ về OpenID là gì, đặc biệt là chuẩn OpenID Connect đang thịnh hành. Chúng ta đã phân tích mối quan hệ giữa OIDC và OAuth 2.0, hiểu rõ vai trò của từng loại token (ID Token, Access Token, Refresh Token), và nắm được luồng hoạt động cơ bản của quá trình xác thực.

Để lại một bình luận