OAuth2 (Open Authorization 2.0) là một giao thức ủy quyền tiêu chuẩn, cho phép một ứng dụng (client) truy cập vào tài nguyên của một người dùng (resource owner) trên một dịch vụ (server) mà không cần chia sẻ thông tin xác thực (như mật khẩu) của người dùng đó. Điều này giúp tăng cường bảo mật và dễ dàng quản lý quyền truy cập.
#
Các thành phần chính của OAuth2:
1.
Resource Owner: Người dùng, chủ sở hữu tài nguyên.
2.
Client: Ứng dụng muốn truy cập vào tài nguyên của người dùng.
3.
Authorization Server: Máy chủ chịu trách nhiệm xác thực người dùng và cấp mã thông báo (token).
4.
Resource Server: Máy chủ lưu trữ tài nguyên mà client muốn truy cập.
#
Quy trình hoạt động:
1.
Yêu cầu ủy quyền: Client yêu cầu ủy quyền từ người dùng thông qua Authorization Server.
2.
Cấp mã ủy quyền: Nếu người dùng đồng ý, Authorization Server cấp cho client một mã ủy quyền.
3.
Đổi mã ủy quyền: Client gửi mã ủy quyền đến Authorization Server để đổi lấy mã thông báo truy cập (access token).
4.
Truy cập tài nguyên: Client sử dụng mã thông báo truy cập để yêu cầu truy cập vào tài nguyên từ Resource Server.
#
Các loại mã thông báo:
-
Access Token: Mã thông báo cho phép client truy cập vào tài nguyên.
-
Refresh Token: Mã thông báo dành cho việc lấy lại Access Token mới khi nó hết hạn.
#
Các kiểu ủy quyền trong OAuth2:
-
Authorization Code Grant: Dành cho ứng dụng web, nơi mã ủy quyền được trao đổi lấy access token.
-
Implicit Grant: Dành cho ứng dụng phía client (như ứng dụng JavaScript), không có mã ủy quyền.
-
Resource Owner Password Credentials Grant: Dành cho ứng dụng tin cậy, nơi người dùng cung cấp thông tin đăng nhập trực tiếp.
-
Client Credentials Grant: Dành cho ứng dụng truy cập vào tài nguyên của chính nó mà không cần người dùng.
OAuth2 rất phổ biến trong việc xác thực và ủy quyền cho các ứng dụng web và di động, đặc biệt là trong các dịch vụ lớn như Google, Facebook, và Twitter.