Rust WebRTC P2P #13 - Login Service + JWT + Argon2
Bài 1322:03

Rust WebRTC P2P #13 - Login Service + JWT + Argon2

Trong phần 13 này, chúng ta triển khai một trong những tính năng quan trọng nhất của backend: Login Service. Mục tiêu là xây dựng cơ chế xác thực an toàn, sử dụng JWT và các tiêu chuẩn bảo mật hiện đại để bảo vệ thông tin người dùng.

1. Nội dung chính

Triển khai JSON Web Token (JWT): Thiết kế TokenClaim để lưu trữ các thông tin cần thiết như User ID, Display Name, Avatar và Title. Xây dựng helper để tạo token dựa trên secret key từ file cấu hình.

Bảo mật với Argon2: Mã hóa mật khẩu trước khi lưu trữ và khi so sánh trong database, giúp đảm bảo an toàn cho dữ liệu người dùng.

Xây dựng Login Service: Định nghĩa LoginRequest, validate dữ liệu đầu vào (định dạng email, mật khẩu tối thiểu 6 ký tự) và xử lý logic trả về AuthResponse bao gồm result code, message và token.

Quản lý Cookie: Tạo và trả về header Set-Cookie cho trình duyệt. Cấu hình cookie với thời hạn dài, HttpOnly, SameSite và Secure để giảm thiểu rủi ro XSS và CSRF.

Demo thực tế: Test login qua API, quan sát cách server trả về token và tự động set cookie trên trình duyệt.

2. Công nghệ sử dụng

Rust với các thư viện jsonwebtoken, argon2, axum, serde_json, cookie. Database sử dụng MongoDB.

Trong phần này, dữ liệu người dùng đã được insert sẵn để tập trung hoàn toàn vào logic xác thực.

3. Kết quả đạt được:

Sau bài học này, bạn sẽ có một Login Service hoàn chỉnh, áp dụng các chuẩn bảo mật phổ biến, sẵn sàng tích hợp vào hệ thống WebRTC signaling.

Khóa học thực chiến giúp bạn xây dựng từ đầu một Signaling Server bằng Rust, xử lý các cuộc gọi audio/video trực tiếp giữa hai trình duyệt thông qua WebRTC Peer-to-Peer mà không cần Media Server. Bạn sẽ nắm vững kiến trúc WebRTC signaling, cách trao đổi SDP Offer/Answer và ICE Candidates giữa các peer thông qua WebSocket. Khóa học sử dụng Axum + Tokio cho backend, MongoDB để lưu trữ dữ liệu, và JWT để xác thực người dùng. Đây là Phần 1 trong series 7 phần về Lập trình Rust với VoIP, bao gồm: WebRTC P2P, Media Server (Janus, LiveKit, Kurento, Asterisk, FreePBX), và hệ thống CRM/Queue/nhạc chờ/chuyển tiếp cuộc gọi. Yêu cầu tiên quyết: Kiến thức cơ bản về Rust (Ownership, Lifetimes, Traits, Async/Await).

Công nghệ sử dụng

RustWebRTCVoIPP2PAxumTokioWebSocketMongoDBJWT

Tác giả

ByteBuffer

ByteBuffer

Coder cỏ tại DTS Group và IPA Solutions

Chuyên gia về Rust và hệ thống VoIP/WebRTC. Nhiều năm kinh nghiệm xây dựng các hệ thống real-time communication với hiệu năng cao và độ trễ thấp.