Đăng nhập bằng RentID (OAuth 2.0)
RentID cho phép đối tác tích hợp phương thức xác thực an toàn, giúp người dùng đăng nhập vào ứng dụng của bạn bằng chính tài khoản RentID của họ.
1. Quy trình Xác thực
Luồng đăng nhập qua RentID (OAuth 2.0) diễn ra qua 4 bước cơ bản:
- Chuyển hướng: Khi người dùng bấm "Đăng nhập bằng RentID", ứng dụng chuyển hướng họ sang trang đăng nhập của RentID.
- Người dùng đồng ý: Người dùng đăng nhập tài khoản và nhấn xác nhận cho phép ứng dụng truy cập thông tin của họ.
-
Nhận mã xác thực: RentID chuyển hướng người dùng quay lại website của bạn kèm theo một mã xác thực tạm thời (
code). - Hoàn tất đăng nhập: Máy chủ (Backend) của bạn dùng mã xác thực này để lấy thông tin tài khoản người dùng và hoàn tất phiên đăng nhập.
3. Bước 2: Đổi mã Code lấy Access Token
Sau khi người dùng đồng ý cấp quyền, RentID sẽ chuyển hướng về redirect_uri?code=AUTH_CODE&state=STATE. Backend của bạn thực hiện một request POST tới endpoint sau:
curl -X POST "https://rentid.vn/oauth/token" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"grant_type": "authorization_code",
"client_id": "01a115cc-2fb6-712d-9127-d39ca860774f",
"client_secret": "fbk8T6YIhHw61nqFwAxg65aPnAG2zGI2J3UtujxT",
"redirect_uri": "https://partner-domain.com/auth/rentid/callback",
"code": "def5020058e3..."
}'
Dữ liệu JSON trả về khi thành công (HTTP 200):
{
"token_type": "Bearer",
"expires_in": 1296000,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"refresh_token": "def50200..."
}
4. Bước 3: Lấy Thông tin Người dùng (User Profile API)
Sau khi có access_token, hệ thống của bạn gửi request với Header Authorization Bearer để nhận thông tin định danh:
curl -X GET "https://rentid.vn/api/user" \ -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..." \ -H "Accept: application/json"
Dữ liệu Profile trả về (Ví dụ khi ứng dụng yêu cầu scope=profile email phone):
{
"status": 200,
"success": true,
"message": "Lấy thông tin người dùng RentID thành công.",
"data": {
"id": 105,
"full_name": "Nguyễn Văn An",
"avatar_url": "https://core.rentid.vn/storage/avatars/user_105.jpg",
"account_type": "individual",
"email": "an.nguyen@example.com",
"email_verified_at": "2026-08-15T08:30:00.000000Z",
"phone": "0987654321",
"phone_verified_at": "2026-08-15T08:35:00.000000Z"
}
}
5. Danh sách Quyền (Scopes) Hỗ trợ
RentID áp dụng nguyên tắc kiểm soát dữ liệu tối thiểu (Principle of Least Privilege). Endpoint /api/user sẽ chỉ trả về những trường tương ứng với Scopes mà ứng dụng của bạn yêu cầu và được người dùng đồng ý:
| Tên Scope | Trường dữ liệu mở khóa | Mô tả hiển thị cho người dùng |
|---|---|---|
| profile | id, full_name, avatar_url, account_type | Xem thông tin cơ bản tài khoản (Họ tên, ảnh đại diện, loại tài khoản). |
| email, email_verified_at | Xem địa chỉ email và thời gian xác minh email của tài khoản. | |
| phone | phone, phone_verified_at | Xem số điện thoại của tài khoản (trả về null nếu chưa cập nhật). |
| trust_score | cached_score, score_synced_at | Xem điểm tín nhiệm đánh giá uy tín thuê xe (RentID Trust Score). |
6. Tự động Cấp & Quản lý OAuth Client bằng API Key
Để tích hợp tính năng Đăng nhập bằng RentID, hệ thống đối tác cần sở hữu cặp thông tin client_id và client_secret. RentID cung cấp API tự phục vụ (Self-Provisioning): Quý đối tác chỉ cần gửi Partner API Key (x-api-key) được cấp để tạo, tra cứu hoặc cấp lại khóa bí mật mà không cần chờ duyệt thủ công.
curl -X POST "https://rentid.vn/api/v1/partner/oauth-client" \
-H "x-api-key: rk_live_your_partner_api_key" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "Cổng Đăng Nhập Đối Tác",
"logo_url": "https://your-domain.com/assets/logo.png",
"redirect_uris": [
"https://partner-domain.com/auth/rentid/callback"
]
}'
curl -X POST "https://rentid.vn/api/v1/partner/oauth-client" \ -H "x-api-key: rk_live_your_partner_api_key" \ -H "Accept: application/json" \ -F "name=Cổng Đăng Nhập Đối Tác" \ -F "logo=@/duong-dan/logo-app.png" \ -F "redirect_uris[]=https://partner-domain.com/auth/rentid/callback"
Tham số Body (JSON / Multipart Form)
| Trường | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
| redirect_uris | Array<String> | Khi tạo mới | Danh sách URL hợp lệ mà RentID được phép chuyển hướng người dùng về sau khi đồng ý cấp quyền. Hỗ trợ nhiều callback URLs (ví dụ: production domain và localhost). |
| redirect_uri | String | Tùy chọn | Đường dẫn URL callback duy nhất (có thể truyền thay thế cho redirect_uris). |
| name | String | Tùy chọn | Tên hiển thị ứng dụng trên màn hình người dùng xác nhận cấp quyền (mặc định lấy theo tên tổ chức đối tác). |
| regenerate_secret | Boolean | Tùy chọn | Truyền true nếu muốn hủy secret cũ và tạo một client_secret mới (hữu ích khi cần xoay vòng khóa hoặc nghi ngờ lộ khóa). |
| logo | File (Binary) | Tùy chọn | File ảnh logo ứng dụng (PNG, JPG, WEBP, SVG, tối đa 2MB). Khuyến nghị ảnh vuông tỉ lệ 1:1 (tối thiểu 128x128px) để hiển thị sắc nét trên màn hình đăng nhập và cấp quyền. |
| logo_url | String (URL) | Tùy chọn | Đường dẫn URL trực tuyến đến ảnh logo của ứng dụng (dùng khi bạn đã host ảnh sẵn trên CDN riêng). |
Dữ liệu JSON trả về khi thành công (HTTP 201 khi tạo mới hoặc 200 khi cập nhật):
{
"status": 201,
"success": true,
"message": "Khởi tạo OAuth Client thành công.",
"data": {
"client_id": "0199c017-d572-7489-b7b5-2efda465e905",
"client_secret": "fbk8T6YIhHw61nqFwAxg65aPnAG2zGI2J3UtujxT",
"name": "Cổng Đăng Nhập Đối Tác",
"logo_url": "https://your-domain.com/storage/oauth-clients/logo.png",
"redirect_uris": [
"https://partner-domain.com/auth/rentid/callback",
"http://localhost:3000/callback"
],
"grant_types": [
"authorization_code",
"refresh_token"
],
"created_at": "2026-10-07T17:30:00.000000Z"
}
}
Tra cứu lại thông tin OAuth Client bất cứ lúc nào
Nếu cần kiểm tra lại Client ID, Client Secret hoặc danh sách Callback URIs đã cấu hình, bạn chỉ cần thực hiện request GET:
curl -X GET "https://rentid.vn/api/v1/partner/oauth-client" \ -H "x-api-key: rk_live_your_partner_api_key" \ -H "Accept: application/json"
play_circle Thử nghiệm Trực tiếp: Quản lý OAuth Client
Bạn có thể kiểm tra trực tiếp API Quản lý OAuth Client bằng cách chọn phương thức (GET hoặc POST) và gửi request bên dưới:
play_circle 7. Thử nghiệm Trực tiếp (Sandbox)
Trải nghiệm thực tế toàn bộ luồng "Đăng nhập bằng RentID": Điền thông tin Client, chọn quyền truy cập và bấm nút đăng nhập để xem dữ liệu hồ sơ cá nhân trả về:
Đăng nhập không thành công
Khởi tạo API key
Xác thực hộp thư Email
Nhập mã 6 chữ số gửi đến
Xác thực thành công & Đã cấp API Key!
Đối tác: