OAuth là một giao thức ủy quyền (authorization protocol) giúp ứng dụng có thể truy cập tài nguyên của người dùng trên một hệ thống khác mà không cần phải lưu trữ hoặc quản lý mật khẩu của người dùng.
Client)
truy cập vào tài nguyên (data hoặc API) của người dùng trên một dịch vụ khác (Resource Server ví dụ: Google Drive)
mà không cần chia sẻ thông tin đăng nhập password)
.Người dùng cấp quyền:
Người dùng đồng ý cho ứng dụng Client truy cập vào tài nguyên của mình.Mã truy cập (Access Token):
Sau khi được cấp quyền, dịch vụ (Authorization Server)
cung cấp một mã truy cập (Access Token)
cho Client
.Truy cập tài nguyên:
Ứng dụng sử dụng mã này để truy cập tài nguyên trên Resource Server
.
Authorization Server
nơi user lấy access key rồi từ đó sẽ truy cập từ Resource Server (ví dụ: google drive)
Authorization Server
: https://developers.google.com hay https://developers.facebook.com/Client ID và Client Secret
Quy trình:
1. Người dùng nhấn nút “Đăng nhập bằng Facebook”
Authorization Server (Facebook OAuth Server)
của Facebook
.2. Website gửi yêu cầu đến Facebook Authorization Server (Facebook OAuth Server)
Client ID:
ID của website được đăng ký với Facebook.Redirect URI:
URL trên website của bạn mà Facebook sẽ chuyển hướng về sau khi người dùng đăng nhập.Scope:
Những quyền mà bạn cần (ví dụ: email, tên, ảnh đại diện, v.v.).Response Type:
Thường là Response Type = code
trong Authorization Code Flow.3. Người dùng đăng nhập và cấp quyền
Đồng ý
để cấp quyền.4. Facebook trả về mã ủy quyền (Authorization Code)
https://yourwebsite.com/callback?code=AUTHORIZATION_CODE
Authorization Code
không chứ thông tin người dùng và nó cũng gi nhớ cho 1 phiên đăng nhập của một người dùng duy nhất.5. Website đổi mã ủy quyền lấy Access Token
Client ID và Client Secret
(đã được cung cấp khi bạn đăng ký ứng dụng trên Facebook).Authorization Code
nhận được ở bước trước.Redirect URI
để đảm bảo tính nhất quán.Facebook
trả về một Access Token
.Authorization Code
không chưa thông tin người dùng nhưng Authorization Code
được cấp cho một phiên người dùng duy nhất trong quy trình OAuth
. nên nó sẽ trả về Access Token
chứa đúng thông tin người dùng đã login.6. Website sử dụng Access Token để lấy thông tin người dùng
7. Đăng nhập thành công