OAuth Integration Guide
Sense Sphere cung cấp hệ thống OAuth cho phép các partner web systems tích hợp xác thực người dùng một cách liền mạch. Người dùng có thể đăng nhập vào Sense Sphere và quay lại hệ thống partner với auth token mà không cần tạo tài khoản riêng.
SenseSphere OAuth Flow (/auth/sensesphere-auth/)
Tổng quan
Flow cho phép partner redirect user đến trang đăng nhập của Sense Sphere, sau đó redirect ngược lại với auth token.
Endpoint: GET /auth/sensesphere-auth/?partner_key=xxx&redirect_uri=yyy
Các bước thực hiện
1. Partner redirect user
GET https://sensesphere.ai/auth/sensesphere-auth/
?partner_key={partner_key}
&redirect_uri={encoded_redirect_uri}
partner_key: Key nhận diện partner (từPartner.partner_key)redirect_uri: URL callback của partner, phải được validate
2. Validate partner + redirect URI
Hệ thống kiểm tra:
partner_keytồn tại trong databaseredirect_urikhớp vớiallowed_redirect_uris(JSON array) HOẶC nằm trongallowed_redirect_domain
Nếu không hợp lệ → hiển thị lỗi "partner_key or redirect_uri is not registered".
3. User authentication
Trường hợp đã đăng nhập:
- Auto-auth: tạo Partner Auth Token ngay lập tức
- Redirect về
redirect_urivới query params:token,user_id,created=false
Trường hợp chưa đăng nhập:
- Hiển thị trang
sensesphere_oauth_page.htmlvới form login/signup - User nhập thông tin hoặc tạo tài khoản mới
- Sau khi thành công → redirect về partner callback
Signup qua OAuth
Khi user chưa có tài khoản Sense Sphere, họ có thể đăng ký trực tiếp từ trang OAuth:
POST params:
action_type:"signup"partner_key,redirect_uriemail,username,first_name,last_name
Quy trình:
- Pre-check email/username uniqueness
- Atomic create user với
set_unusable_password()(login chỉ qua OAuth token) - Auto-login và tạo Partner Auth Token
- Redirect về partner callback với
created=true
Login qua OAuth
POST params:
action_type:"login"partner_key,redirect_uriusername(hoặc email),password
Quy trình:
- Authenticate với username/email + password
- Auto-login và tạo Partner Auth Token
- Redirect về partner callback với
created=false
Callback URL format
{redirect_uri}?token={token}&user_id={user_uuid}&created={true|false}
token: Partner Auth Token value (dùng cho các API calls tiếp theo)user_id: UUID của usercreated:"true"nếu đây là signup mới,"false"nếu đã có tài khoản
Google OAuth Login (/auth/google/)
Tổng quan
Hỗ trợ đăng nhập bằng tài khoản Google OAuth2. Có thể kết hợp với partner context để redirect về hệ thống partner sau khi login.
Endpoints:
GET /auth/google/— Bắt đầu flow, redirect đến Google consent screen- Callback:
GET /auth/google/callback/— Xử lý response từ Google
Flow (không có partner)
- User click "Login with Google" →
GET /auth/google/?next=/dashboard/ - Sense Sphere redirect đến Google OAuth consent screen với:
-client_id,redirect_uri,scope=openid email profile
-statenonce để chống CSRF - User approve trên Google → redirect về
/auth/google/callback/?code=xxx&state=yyy - Sense Sphere exchange code cho access token tại
https://oauth2.googleapis.com/token - Fetch user info từ
https://www.googleapis.com/oauth2/v3/userinfo - Kiểm tra email verified → tìm hoặc tạo user account
- Auto-login và redirect về
nextURL (hoặc/dashboard/)
Flow (có partner)
Thêm query params vào bước 1:
GET /auth/google/?partner_key=xxx&redirect_uri=yyy&next=/dashboard/
Sau khi login thành công:
- Tạo Partner Auth Token
- Redirect về
redirect_urivớitoken,user_id,created(tương tự SenseSphere OAuth)
Auto-account creation
Khi user mới chưa có tài khoản Sense Sphere:
username: derived từ email local-part (với collision handling)password: random secure token (secrets.token_urlsafe(24)) — không dùng để loginfirst_name,last_name: lấy từ Google profile- Account được tạo với
create_user()→ email verified check trước khi tạo
Error handling
Các lỗi có thể xảy ra:
oauth_error=Google+login+is+not+configured— OAuth chưa được setupoauth_error=Invalid+authentication+state— State nonce mismatch (CSRF protection)oauth_error=You+cancelled+Google+login— User hủy trên Googleoauth_error=No+authentication+code+received+from+Google.— Không nhận được codeoauth_error=Cannot+authenticate+with+Google.— Token exchange failedoauth_error=Google+did+not+return+an+access+token.— Missing access tokenoauth_error=Could+not+retrieve+Google+account+information.— Userinfo fetch failedoauth_error=Google+account+email+is+not+verified.— Email không verifiedoauth_error=Account+has+been+disabled.— Account bị disable
Partner Configuration (Admin)
Để thiết lập OAuth cho partner, admin cần cấu hình trong Partner model:
| Field | Mô tả | Bắt buộc |
|---|---|---|
partner_key |
Unique key nhận diện partner | Có (nếu muốn bật OAuth) |
allowed_redirect_domain |
Domain được phép redirect (ví dụ: app-a.com) |
Có (khi dùng domain matching) |
allowed_redirect_uris |
JSON array của exact URIs (ví dụ: ["https://app-a.com/auth/callback"]) |
Có (override domain matching) |
Priority: allowed_redirect_uris được ưu tiên hơn allowed_redirect_domain khi cả hai đều có giá trị.
Security Considerations
- Redirect URI validation: Partner key + redirect_uri được validate 2 lần — tại start point và callback point (defense in depth)
- State nonce: Google OAuth sử dụng state parameter để chống CSRF attacks
- Token rotation: Mỗi khi tạo token mới, old tokens tự động bị revoke
- Rate limiting: OAuth callback endpoint bị rate limit
10/mper IP; login view5/mper IP
Trang liên quan
- Partner API Reference — Các endpoints cho partner systems
- FAQ — Câu hỏi thường gặp