Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • OAuth và MFA: Hai trụ cột bảo mật ứng dụng hiện đại – Hiểu đúng để phát triển an toàn!

    Mọi người đã bao giờ thắc mắc tại sao chỉ với một nút "Đăng nhập bằng Google" mà bạn có thể truy cập hàng loạt ứng dụng mà không phải nhớ thêm tài khoản, nhưng dữ liệu cá nhân vẫn được bảo vệ? Tất cả là nhờ sự kết hợp giữa OAuthMFA, hai công nghệ bảo mật đang giữ vai trò nền tảng cho thế giới số ngày nay.
    Tại sao cần OAuth?

    Hãy tưởng tượng mọi người muốn sử dụng ứng dụng quản lý công việc mới nhưng không muốn tạo thêm tài khoản. Và lúc này, Nút "Đăng nhập bằng Google" chính là OAuth đang hoạt động.

    Trước OAuth: Người dùng phải đưa username/password Google cho ứng dụng → Cực kỳ nguy hiểm!

    Với OAuth: Google "ủy quyền" cho ứng dụng truy cập thông tin của người dùng mà không cần biết mật khẩu.

    OAuth Flow


    Bước 1: App (ứng dụng) chuyển hướng bạn đến Google/Facebook với yêu cầu: "Tôi cần truy cập email và tên của user này"
    Bước 2: Bạn đăng nhập Google/Facebook và xem thông báo: "App X muốn truy cập email và tên của bạn. Đồng ý?"
    Bước 3: Nếu đồng ý, Google/Facebook tạo authorization code (như một tấm vé tạm thời) và gửi bạn về App kèm code này
    Bước 4: App lấy authorization code + client_secret (mật khẩu riêng của App) gửi cho Google/Facebook để đổi lấy access token (chìa khóa thật)
    Bước 5: App dùng access token để lấy thông tin từ Resource Server (máy chủ của Google/Facebook)
    Điểm quan trọng: Bạn chưa bao giờ đưa mật khẩu Google cho App!

    OAuth 1.0 vs 2.0 vs 2.1

    OAuth 1.0 (2007): Phức tạp, dùng chữ ký mật mã cho mỗi request. An toàn nhưng khó code.
    OAuth 2.0 (2012): Đơn giản hóa, dựa vào HTTPS. Đây là version chúng ta dùng hàng ngày.
    OAuth 2.1 (2024): Loại bỏ những cách không an toàn, bắt buộc PKCE (sẽ giải thích bên dưới).
    PKCE - Lớp bảo mật thêm

    Vấn đề: Authorization code có thể bị đánh cắp trên đường truyền.

    Giải pháp PKCE:
    • App tạo code_verifier (chuỗi ngẫu nhiên)
    • Hash nó thành code_challenge
    • Gửi challenge cho Authorization Server, giữ verifier ở máy
    • Khi đổi token, phải chứng minh có verifier gốc
    → Kẻ tấn công dù có authorization code cũng không thể đổi token.

    MFA - Khóa nhiều lớp

    Nguyên tắc: Thay vì 1 "chìa khóa", dùng 2-3 loại khác nhau:

    Something you know: Mật khẩu, PIN
    Something you have: Điện thoại, USB security key
    Something you are: Vân tay, khuôn mặt

    Các loại MFA phổ biến:

    1. SMS OTP: Nhận mã qua tin nhắn
    • Ưu: Đơn giản
    • Nhược: Có thể bị SIM swapping
    2. TOTP (Google Authenticator):
    • App tạo mã 6 số mỗi 30 giây
    • Dựa trên secret key + thời gian hiện tại
    • An toàn hơn SMS
    3. WebAuthn/Passkeys:
    • Dùng vân tay, Face ID
    • Private key không bao giờ rời khỏi thiết bị
    • Chống phishing 100%
    OAuth + MFA trong thực tế
    • Bạn nhấn "Đăng nhập bằng Microsoft"
    • Microsoft yêu cầu MFA (nhập mã từ phone)
    • Hoàn thành MFA → Nhận authorization code
    • App đổi code lấy access token
    • Dùng token truy cập Microsoft API

    Tại sao quan trọng?

    Scalability: Token-based, không cần lưu session trung tâm
    Security: Tách biệt authentication và authorization
    User Experience: Single Sign-On, không cần nhớ nhiều mật khẩu
    API Economy: Cho phép apps kết nối an toàn với nhau

    Điều cần nhớ

    Giao thức -> OAuth = Ủy quyền ("Bạn được làm gì?")

    Cơ chế-> MFA = Xác thực mạnh ("Chắc chắn bạn là ai?")


    Hai công nghệ này kết hợp tạo nên nền tảng bảo mật cho hầu hết ứng dụng hiện đại. Hiểu rõ chúng giúp bạn thiết kế hệ thống tốt hơn và debug các vấn đề authentication/authorization hiệu quả.

    Security không phải là destination mà là journey. OAuth và MFA là những tools quan trọng trong hành trình đó.
Working...
X