OAuth2 là gì

Ngày đăng: 04/10/2024 21:30 - Mới nhất: 04/10/2024 21:34 - Lượt xem: 71 - Lượt tìm kiếm: 0 - Bình luận: 1

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.

Bạn có muốn bình luận hoặc nhận xét về OAuth2 là gì không?
Hãy nhập thông tin để gửi bình luận nhé

Nội dung bình luận mới nhất

OAuth2 (Open Authorization 2.0) là một giao thức xác thực và cấp quyền mở tiêu chuẩn cho phép các ứng dụng bên thứ ba truy cập vào tài nguyên của người dùng trên một dịch vụ mà không cần tiết lộ mật khẩu. OAuth2 được sử dụng rộng rãi bởi nhiều nền tảng như Google, Facebook, GitHub, và các dịch vụ web khác để cho phép ứng dụng hoặc dịch vụ khác truy cập vào tài nguyên của người dùng một cách an toàn.

### Các thành phần chính của OAuth2:

1. Resource Owner (Chủ sở hữu tài nguyên):
- Là người dùng, người sở hữu tài khoản trên một dịch vụ và tài nguyên trên đó (ví dụ như email, hình ảnh, tệp tin, v.v.).

2. Client (Ứng dụng khách):
- Là ứng dụng hoặc dịch vụ muốn truy cập tài nguyên của người dùng. Ứng dụng này sẽ yêu cầu cấp quyền từ người dùng thông qua OAuth2.

3. Authorization Server (Máy chủ ủy quyền):
- Là máy chủ chịu trách nhiệm xác thực người dùng và cấp quyền (authorization tokens) cho các ứng dụng khách. Máy chủ này thường thuộc về dịch vụ mà người dùng có tài khoản (ví dụ: Google, Facebook).

4. Resource Server (Máy chủ tài nguyên):
- Là máy chủ chứa tài nguyên mà ứng dụng khách muốn truy cập, chẳng hạn như một API cung cấp dịch vụ của Google hay Facebook. Resource Server sẽ xác minh token trước khi cho phép truy cập tài nguyên.

5. Access Token (Mã truy cập):
- Là mã thông tin cấp phát cho ứng dụng khách sau khi người dùng đã cấp quyền. Mã này đại diện cho quyền truy cập vào tài nguyên của người dùng mà không cần chia sẻ mật khẩu.

### Luồng hoạt động của OAuth2:
1. Client yêu cầu quyền truy cập:
- Ứng dụng khách (client) gửi yêu cầu đến Authorization Server (máy chủ ủy quyền) để xin quyền truy cập tài nguyên của người dùng. Yêu cầu này bao gồm các thông tin như quyền truy cập yêu cầu, địa chỉ callback, và mã định danh client.

2. Authorization Server yêu cầu xác thực:
- Authorization Server yêu cầu người dùng xác thực (thường qua giao diện đăng nhập) và hỏi xem họ có muốn cho phép ứng dụng khách truy cập vào tài nguyên không.

3. Người dùng cấp quyền:
- Sau khi người dùng đồng ý cấp quyền, Authorization Server sẽ gửi một mã xác thực (Authorization Code) cho ứng dụng khách qua một URL callback đã chỉ định trước.

4. Client trao đổi mã lấy Access Token:
- Ứng dụng khách sử dụng Authorization Code để gửi một yêu cầu khác đến Authorization Server và đổi mã này lấy Access Token.

5. Access Token được sử dụng để truy cập tài nguyên:
- Với Access Token, ứng dụng khách có thể gửi yêu cầu đến Resource Server để truy cập tài nguyên của người dùng.

### Các luồng cấp quyền trong OAuth2:
OAuth2 hỗ trợ nhiều cách để cấp phát Access Token tùy vào loại ứng dụng:

1. Authorization Code Grant:
- Sử dụng trong các ứng dụng phía máy chủ. Sau khi người dùng cấp quyền, máy chủ nhận được Authorization Code và dùng mã này để yêu cầu Access Token.

2. Implicit Grant:
- Thường được sử dụng cho các ứng dụng phía client như ứng dụng JavaScript trên trình duyệt. Trong trường hợp này, Access Token được cấp trực tiếp mà không cần Authorization Code.

3. Client Credentials Grant:
- Thường dùng cho các ứng dụng không liên quan đến người dùng (chỉ liên quan đến client). Client tự xác thực và yêu cầu Access Token để truy cập tài nguyên.

4. Password Credentials Grant:
- Sử dụng trong trường hợp ứng dụng khách thu thập trực tiếp tên người dùng và mật khẩu (không khuyến khích do tiềm ẩn rủi ro bảo mật).

### Ưu điểm của OAuth2:
- An toàn hơn: Người dùng không cần cung cấp mật khẩu cho ứng dụng bên thứ ba, chỉ cấp quyền thông qua Access Token.
- Giảm thiểu rủi ro: Người dùng có thể kiểm soát và thu hồi quyền truy cập bất cứ lúc nào mà không cần thay đổi mật khẩu.
- Tính mở rộng: Hỗ trợ nhiều loại ứng dụng từ web, mobile đến desktop.

OAuth2 là giao thức phổ biến để xác thực và cấp quyền hiện nay, được thiết kế để hoạt động với nhiều loại dịch vụ, tăng cường bảo mật và dễ dàng tích hợp trong các hệ thống phân tán.
04/10/2024 21:34