OAuth2 là gì? Ưu và nhược điểm, cách thức hoạt động

OAuth2 là gì mà được các nền tảng mạng xã hội nổi tiếng hàng đầu thế giới như Facebook, Google, Twitter ưa chuộng sử dụng? Ưu, nhược điểm cũng như cách thức hoạt động của OAuth2 ra sao? Lanit sẽ giúp các bạn tìm ra câu trả lời trong những chia sẻ ngày hôm nay nhé!

1. OAuth2 là gì?

OAuth2 là phiên bản kế nhiệm của OAuth. Nó là một tiêu chuẩn cho phép một website hoặc một ứng dụng có thể truy cập vào tài nguyên lưu trữ bởi các ứng dụng web khác thay cho người dùng.

Nói một cách dễ hiểu hơn: Phiên bản kế nhiệm của OAuth cho phép người dùng chia sẻ các ứng dụng tài nguyên với nhau một cách tự động mà không cần tới username và password. Nhờ đó, người dùng có thể bảo mật được thông tin tài khoản của mình và không cần sử dụng quá nhiều tài khoản trong quá trình làm việc.

oauth2 là gì
OAuth2 là phiên bản kế nhiệm của tiêu chuẩn OAuth

2. Quá trình phát triển của OAuth

OAuth với phiên bản cao cấp nhất hiện nay là OAuth2. Trước khi phiên bản này ra mắt nó đã trải qua một quá trình phát triển dài. Năm 2006, chuẩn OAuth được Twitter ra mắt. Khi đó, nó có tên gọi là OpenID. Để sử dụng chuẩn ứng dụng này, người dùng cần tạo username và password mới có thể đăng nhập.

oauth2 là gì
OAuth2 ra đời vào năm 2012

Sau đó 4 năm, vào năm 2010, phiên bản kế nhiệm của OAuth là OAuth 1.0 chính thức ra đời. Nó được ký hiệu là RFC 5849. Tuy nhiên, OAuth 1.0 lại bộc lộ những hạn chế về lỗi bảo mật hệ thống. Phát hiện này có tên là Session Fixation. Thông qua lỗi bảo mật này, các Hacker có thể xâm nhập vào hệ thống và đánh cắp các thông tin, tài nguyên của người dùng.

Chính vì những khuyết điểm trên đã khiến cho OAuth 1.0 không còn được ưa chuộng và nó sớm bị thay thế bởi phiên bản OAuth2 vào 2 năm sau đó (năm 2012). Mặc dù vẫn còn một vài hạn chế nhỏ trên trình duyệt Chrome, nhưng OAuth2 được ứng dụng rất phổ biến.

Xem thêm: Intranet là gì? Ứng dụng của Intranet trong doanh nghiệp

3. Mục đích của OAuth 2.0 là gì?

OAuth2 được thiết kế nhằm thực hiện 4 mục đích chính. Bao gồm: Resource Owner, Client, Resource Server và Authorization Server. Trong đó,

Resource Owner:

Có nghĩa là chủ sở hữu tài nguyên, là người quản trị và được phép cấp quyền truy cập cho người khác vào tài nguyên của họ. Chẳng hạn: Bạn chia sẻ các thông tin cá nhân của mình như email, giới tính, số điện thoại, ngày sinh của mình lên một địa chỉ trang web nào đó hay các trang mạng xã hội. Những thông tin mà bạn chia sẻ được gọi là Resource Owner.

 

oauth 2.0 là gì
OAuth có 4 mục đích chính là Resource Owner, Client, Resource Server và Authorization Server

Client:

Nó là ứng dụng mà người dùng muốn truy cập vào. Tuy nhiên, Client cần được chia sẻ quyền truy cập và nó phải được xác thực bởi API.

Resource Server:

Tác vụ này thực hiện mục đích lưu trữ, quản lý các tài khoản mà người dùng tạo ra.

Authorization Server:

Nó có nhiệm vụ định danh và xác minh danh tính của người dùng để cấp mã access token thông báo truy cập đến cho ứng dụng. Trong một số trường hợp, Authorization Server có vai trò giống với Resource Server. Và trong Authorization Server, token là một đoạn mã được tạo ra ngẫu nhiên khi Client có yêu cầu cần xử lý. Gồm có Access token và Refresh token.

4. Luồng hoạt động của OAuth2

Luồng hoạt động của OAuth2 là gì? Chúng ta sẽ cùng tìm hiểu ngay bây giờ thông qua nền tảng mạng xã hội nổi bật nhất hiện nay – Facebook. Hãy để ý rằng, khi bạn truy cập vào địa chỉ trang Facebook. 

Bạn sẽ được dẫn tới trang đích của Facebook hoặc Google sẽ hiển thị ra các kết quả để bạn lựa chọn. Website sẽ yêu cầu bạn đăng nhập bằng địa chỉ email, password, số điện thoại,…để truy cập vào trang và sử dụng các dịch vụ trên trang.  

oauth2 là gì
Tóm tắt hoạt động của OAuth2

Khi các quyền sử dụng những thông tin trên được bạn cho phép, Facebook sẽ tạo ra một accesstoken cho các quyền đó. Và bạn có thể tương tác trên website. Đó chính là cách thức hoạt động của OAuth2 trên nền tảng Facebook. Và tương tự ở các nền tảng khác cũng như vậy.

Hãy quan sát sơ đồ luồng hoạt động của OAuth2 dưới đây để hiểu hơn về cách thức hoạt động của tiêu chuẩn này nhé!

oauth2 là gì

5. Ưu và nhược điểm của OAuth2 là gì?

Không phải ngẫu nhiên, OAuth2 được sử dụng phổ biến và rộng rãi như hiện nay. Đặc biệt, tiêu chuẩn này còn được các nền tảng lớn nhất hiện nay như Facebook, Google sử dụng. Chúng ta hãy tìm hiểu về ưu, nhược điểm của OAuth2 để nắm rõ hơn về ứng dụng này nhé!

Ưu điểmNhược điểm
OAuth2 hoạt động dựa trên chứng chỉ bảo mật SSL. Nó có thể bảo vệ quyền riêng tư giữa trình duyệt và server web.

Sử dụng hạn chế trên trình duyệt Chrome vì nó xuất hiện những lỗ hổng bảo mật tạo điều kiện cho hacker tấn công.


Phiên bản 2.0 của OAuth có tính năng lưu token, giúp cho việc truy vấn người dùng thuận tiện và tốc độ nhanh hơn.

Khi tài khoản bị hack nó sẽ ảnh hưởng đến nhiều trang web cùng lúc.


Với OAuth2, bạn có thể truy cập vào dữ liệu của người dùng ngay cả khi authorization token hết hạn.



Trong trường hợp có phần mở rộng mô tả hệ thống, nó sẽ phát sinh các triển khai không tương tác. Đồng nghĩa với việc người dùng phải viết riêng các mã khi truy cập vào các web.


Cho phép chia sẻ các dữ liệu của người dùng mà không phải sử dụng đến tài khoản và pass đăng nhập.

6. OAuth2 có các loại Grant Type nào?

Grant trong OAuth2 tập hợp các bước mà Client thực hiện để được cấp quyền truy cập vào dữ liệu chủ sở hữu. Cụ thể các loại Grant trong OAuth2 như sau.

Authorization Code Grant

Authorization Code Grant là một tùy chọn rất phù hợp với các ứng dụng web truyền thống. Nơi mà mọi trao đổi được diễn ra trong môi trường an toàn của máy chủ website.

Grant trong OAuth2 này được dùng bởi ứng dụng Single Page hoặc ứng dụng cho các thiết bị di động, hay các ứng dụng gốc.  Tuy nhiên có một điều cần lưu ý, đó là client secret sẽ không thể lưu trữ an toàn tại đây. Bởi vậy mà việc xác thực sẽ bị giới hạn ở việc sử dụng Client ID riêng trong quá trình trao đổi. Giải pháp tốt nhất để thay thế là Authorization Code with PKCE Grant.

Implicit Grant

Implicit Grant là quá trình đơn giản hóa các Access token. Chúng sẽ được trả lại trực tiếp cho Client, giúp tối giản thời gian xử lý. Theo đó, Authorization server có thể trả về Access token ở dạng tham số trong callback URI hoặc ở  dạng biểu mẫu.

oauth2 là gì
Implicit Grant là quá trình đơn giản hóa các Access token

PKCE (Authorization Code Grant with Proof Key for Code Exchange)

Grant này là quy trình ủy quyền. Nó tương tự như Authorization Code Grant. Tuy nhiên, PKCE được mở rộng hơn với các bước bổ sung giúp khả năng bảo vệ, tính bảo mật trên ứng dụng di động hay các native app, SPA trở lên hiệu quả hơn.

Resource Owner Credentials Grant Type

Loại Grant này đưa ra các yêu cầu cho Client là phải thu thập thông tin đăng nhập của người dùng. Sau đó, thông tin được gửi tới Authorization Server. Đặc điểm của Resource Owner Credentials Grant Type là không ảnh hưởng tới các chuyển hướng đến Authorization server.

Client Credentials Grant Type

Client Credentials Grant Type được dùng trong các ứng dụng không có tương tác. Đó chính là các quy trình đã được thiết lập tự động. Lúc này, ứng dụng sẽ được xác thực độc lập thông qua client ID và secret.

oauth la gi
Client Credentials Grant Type được dùng trong các ứng dụng không có tương tác

Refresh Token Grant

Refresh Token Grant là quy trình có liên quan đến quá trình Refresh Token trao đổi để lấy Access Token.

Trên đây là những chia sẻ từ Lanit về OAuth2 là gì. Ưu, nhược điểm cũng như cách thức hoạt động của tiêu chuẩn OAuth2. Hy vọng các bạn đã hiểu hơn về tiêu chuẩn này và có những ứng dụng thiết thực nhất. Mọi thông tin cần giải đáp thêm về OAuth2, các bạn hãy truy cập liên hệ với LANIT qua Hotline hoặc truy cập website của chúng tôi nhé!

avata Hải

Triệu Huyền Trang

Triệu Huyền Trang chuyên gia 3 năm kinh nghiệm trong ngành Công Nghệ, Phần Mềm. Chuyên chia sẻ các kiến thức phần mềm mã nguồn, ứng dụng và thông tin về công nghệ hữu ích.

Chat với chúng tôi qua Zalo!
Chat với chúng tôi qua Zalo!