post-image

OAuth2 là gì ? Tại sao chúng ta nên sử dụng nó

Tổng quan

OAuth là viết tắt của Open Authentication hoặc Open Authorization, là một phương thức xác thực các ứng dụng có thể chia sẻ tài nguyên với nhau mà không cần chia sẻ thông tin về username và password như những cách truyền thống. OAuth2 hiện tại đang vẫn được các nền tảng xã hội lớn như Twitter, Facebook hay Google sử dụng. Vậy OAuth2 là gì? Tại sao lại nên sử dụng nó ? Cùng tìm hiểu ở bài viết này nhé.

OAuth2 là gì?

Đầu tiên chúng ta cùng tìm hiểu OAuth là gì ? OAuth là viết tắt của Open Authentication hoặc Open Authorization, là một phương thức xác thực các ứng dụng có thể chia sẻ tài nguyên với nhau mà chúng ta không cần phải đăng nhập như các cách truyền thống cũ. 

OAuth là viết tắt của Open Authentication hoặc Open Authorization:

  • Open Authentication nghĩa là xác thực người dùng thông qua việc đăng nhập.
  • Open Authorization nghĩa là cấp quyền để có thể truy cập vào các resource.

Lịch sử phát triển

  • Năm 2006, Twitter đưa ra chuẩn OAuth đầu tiên có tên là OpenID, điểm yếu đó là yêu cầu người dùng phải cung cấp thông tin cá nhân.
  • Năm 2010, phát hành phiên bản chính thức đầu tiên của Oauth 1.0 (RFC 5849).
  • Sau đó lỗi bảo mật nghiêm trọng được phát hiện với tên gọi Session Fixation cho phép Hacker chiếm quyền truy cập vào tài nguyên của người dùng.
  • Năm 2012, OAuth2 ra đời, tuy vẫn còn những lỗi bảo mật như dùng Chrome để Hack Facebook nhưng hiện vẫn đang được sử dụng khá rộng rãi.

Một số khái niệm cần phải biết

Khi làm việc với OAuth2 có một vài khái niệm sau chúng ta cần phải biết:

  • Resoure Owner: là chủ sở hữu của dữ liệu mà ta muốn chia sẻ. Ví dụ chúng ta muốn chia sẻ các thông tin như tên, email cho một trang web nào đó thì chúng ta có thể đăng nhập trang web đó bằng Facebook khi đó những thông tin như tên, email sẽ là những tài nguyên cần được chia sẻ và lúc này chính chúng ta là Resource Owner.
  • Resource Server: là server lưu trữ những thông tin mà ta chia sẻ. Server này phải có khả năng nhận và trả lời các yêu cầu (request) truy xuất dữ liệu. Như ở ví dụ trên của chúng ta thì resource server chính là Facebook.
  • Client: Là những ứng dụng muốn sử dụng những tài nguyên mà ta chia sẻ. Và chúng ta có thể thấy là ở ví dụ trên Client sẽ là trang web muốn các thông tin cá nhân của ta.
  • Authorization Server: Là đối tượng quyết định việc cấp quyền truy cập vào dữ liệu cho client. Như trong ví dụ trên, đây chính là authorization server của Facebook. Đôi khi resource server và authorization server có thể là một , nhưng về mặt chức năng mà nói, đây là 2 chức năng hoàn toàn riêng biệt.

Vậy OAuth2 hoạt động như thế nào?

Sau khi đã năm được một vài khái niệm cơ bản ở trên, chúng ta cùng tìm hiểu cách hoạt động của OAuth2 nhé. Khi chúng ta đăng nhập với Facebook thì trang web sẽ dẫn bạn tới trang của Facebook và liệt kê một số quyền mà trang web đó muốn chúng ta cấp quyền để sử dụng.

Như ví dụ ở trên thì website sẽ yêu cầu chúng ta cung cấp các thông tin như tên và email. Nếu đồng ý cung cấp những thông tin đó thì mới có thể đăng nhập để sử dụng các dịch vụ của website đó.

Khi đồng ý cung cấp các quyền đó, Facebook sẽ sinh ra một AccessToken cho các quyền đó và website đấy có thể sử dụng được.

Sơ đồ luồng hoạt động của OAuth2

Từ ví dụ trên chúng ta có thể hình dung ra OAuth2 sẽ được hoạt động theo luồng như sơ đồ dưới đây:

OAuth2
  • Ứng dụng yêu cầu ủy quyền để truy cập vào Resource Server (Gmail,Facebook, Twitter hay Github…) thông qua User
  • Nếu User ủy quyền cho yêu cầu trên, Ứng dụng sẽ nhận được ủy quyền từ phía User (dưới dạng một token string)
  • Ứng dụng gửi thông tin định danh (ID) của mình kèm theo ủy quyền của User tới Authorization Server
  • Nếu thông tin định danh được xác thực và ủy quyền hợp lệ, Authorization Server sẽ trả về cho Ứng dụng access_token. Đến đây quá trình ủy quyền hoàn tất.
  • Để truy cập vào tài nguyên (resource) từ Resource Server và lấy thông tin, Ứng dụng sẽ phải đưa ra access_token để xác thực.
  • Nếu access_token hợp lệ, Resource Server sẽ trả về dữ liệu của tài nguyên đã được yêu cầu cho ứng dụng đó.

Ưu điểm của OAuth2

  • OAuth 2.0 là một giao thức rất linh hoạt dựa trên SSL (Secure Sockets Layer đảm bảo dữ liệu giữa máy chủ web và trình duyệt vẫn giữ được tính riêng tư) để lưu token truy cập của người dùng.
  • Cho phép truy cập hạn chế vào dữ liệu của người dùng và cho phép truy cập khi authorization token hết hạn.
  • Có khả năng chia sẻ dữ liệu cho người dùng mà không phải tiết lộ thông tin cá nhân.
  • Dễ dàng hơn để thực hiện và cung cấp xác thực mạnh mẽ hơn.

Tại sao lại nên sử dụng OAuth2 ?

  • Để đọc dữ liệu của người dùng từ một ứng dụng khác.
  • Nó cung cấp quy trình authorization cho web, ứng dụng máy tính để bàn và thiết bị di động.
  • Đây là một ứng dụng web phía máy chủ sử dụng authorization code và không tương tác với thông tin đăng nhập của người dùng.

Đọc thêm: Facebook API

Leave a Reply

Your email address will not be published.