Oauth là một giao thức mở. Giao thức này cho phép người dùng xác thực tài khoản và ủy quyền chia sẻ nguồn tài nguyên từ Service Provider cho các bên ứng dụng thứ 3 (APPS) mà không phải cung cấp tên đăng nhập và mật khẩu cho các ứng dụng này.
Cũng tương tự như OpenID, giao thức xác thực của Oauth cũng bao gồm 3 thành phần: nhà cung cấp dịch vụ (Service Provider - SP), người sử dụng dịch vụ (Service User - SU) và bên ứng dụng thứ 3 khai thác tài nguyên (Service Consumer - SC).
Ở mô hình chuẩn mở, tổ chức sử dụng Oauth đề xuất quy trình xử lý xác thực, ủy quyền như sau:
49
Hình 21: Quy trình xử lý xác thực, ủy quyền khai thác tài nguyên dịch vụ (Nguồn: Oauth.net)
Ở quy trình này, Oauth đề ra 7 bước để hoàn thành xác thực tài khoản và ủy quyền truy xuất tài nguyên:
Bước 1 - Consumer request: phía SC gửi yêu cầu truy xuất tài nguyên tới SP thông qua Request Token trong request này bao gồm:
- Oauth_consumer_key: khóa xác thực consumer đăng ký với SP - Oath_signature_method: Phương thức ký xác thực oauth
- Oauth_signature: chữ ký
- Oauth_timestamp: thời hạn xác thực - Oauth_nonce:
- Oauth_version: phiên bản Oauth
- Oauth_callback: triệu gọi sau xác thực.
Bước 2 - Grant request token: SP cấp Request Token cho SC. Gói tin Request Token SP gửi cho SC bao gồm:
- Oauth_token: mã token xác thực (công khai) - Oauth_token_secret: mã token xác thực (bí mật) - Oauth_callback_confirmed: Xác nhận triệu hồi
Bước 3 – Direct user: SC chuyển hướng SU về hộp thoại xác thực của SP kèm theo oauth_token đã nhận được từ SP.
50
Bước 4 – Obtain User Authorization: Tại bước này SU tiến hành cung cấp thông tin xác thực tài khoản cho SP, SP tiến hành xác thực thông tin này, nếu đúng sẽ chuyển hướng SU trở về SC. Khi chuyển về SC, SP gửi kèm theo các thông tin:
- Oauth_token: mã token xác thực (công khai) - Oauth_verifier: Xác minh Oauth
Bước 5 – Request Access Token: SC sau khi nhận được các thông tin xác thực từ phía SP, lúc này SC gửi tiếp yêu cầu Access Token cho SP bao gồm các thông tin:
- Oauth_consumer_key - Oauth_token - Oath_signature_method - Oauth_signature - Oauth_timestamp - Oauth_nonce - Oauth_version - Oauth_verifier
Bước 6 – Grant Access Token: SP tiến hành kiểm tra các thông tin yêu cầu từ SC và cấp thông tin truy cập cho SC bao gồm:
- Oauth_token
- Oauth_token_secret
Bước 7 – Consumer Access Protected Resource: Kể từ bước này, Consumer có thể truy cập những tài nguyên được bảo vệ từ SP thông qua các thông tin mà SP đã cung cấp cho SC. Mỗi yêu cầu về tài nguyên của SC lúc này bao gồm:
- Oauth_consumer_key - Oauth_token - Oath_signature_method - Oauth_signature - Oauth_timestamp - Oauth_nonce - Oauth_version
Qua tìm hiểu, nghiên cứu và tiến hành thực nghiệm trên thực tế, phương thức xác thực, ủy quyền chuẩn Oauth cho thấy phù hợp với mô hình thương mại có quy mô lớn. Nếu áp dụng cho bài toán đã nêu trong luận văn tỏ ra không phù hợp vì có nhiều quy trình phức tạp, nhưng lại không thật cần thiết với đặc thù bài toán đặt ra. Do vậy, tôi xin đề xuất mô hình Oauth với cơ chế cải tiến để phù hợp với thực tiễn áp dụng.
51