Để đi tìm chân lý OAuth 2.0 là gì và nó hoạt động như thế nào mà biết bao kỹ sư công nghệ thông tin đã nằm xuống. Con đường đi tới cánh cổng OAuth 2.0 phải vượt qua cánh rừng kỹ thuật u ám với đầy rẫy những thuật ngữ khiến ta choáng váng, mất dần nhận thức và đi đến cái kết bi thảm.

Bài này là những chia sẻ về kiến thức mà tôi thu lượm được trên hành trình đi tìm chân lý OAuth 2.0 của mình. Hy vọng sẽ giúp ích được cho các chiến binh mới để không phải bỏ mạng vô ích.

Lời tựa

Việc đọc thẳng vào tài liệu đặc tả của OAuth 2.0 rất dễ tẩu hoả nhập ma. Nó dài lê thê và nặng tính hàn lâm kỹ thuật. Để giúp các bạn hiểu căn bản OAuth 2.0 là gì và hoạt động của nó. Tôi sẽ trình bày tóm lược và sẽ lấy ví dụ để các bạn dễ hình dung. Sau khi có được căn bản, nếu các bạn muốn tu luyện tiếp để trở thành cao thủ thì hãy đọc tài liệu đặc tả đầy đủ ở đây: RFC 6749.

Sự ra đời của OAuth 2.0

Các ứng dụng hiện đại thường được thiết kế xoay quanh các API. API cho phép các ứng dụng tái sử dụng logic và tận dụng chức năng dịch vụ. API cung cấp khả năng truy cập vào dữ liệu và dịch vụ, vì thế cần có cơ chế để kiểm soát quyền truy cập vào API từ các ứng dụng. Các ứng dụng cần phải được ủy quyền trước để có thể gọi tới các API. Nếu một ứng dụng muốn gọi vào API thay người dùng để truy cập tài nguyên do người dùng đó sở hữu, nó cần có sự đồng ý của người dùng. Trước đây, người dùng thường phải chia sẻ thông tin xác thực của mình (username/password) cho ứng dụng để chúng gọi được tới các API. Điều này đã cung cấp cho ứng dụng toàn quyền truy cập - một lượng truy cập không cần thiết. Đồng thời trách nhiệm bảo vệ thông tin xác thực của người dùng cũng không được đề cập khi mà có nhiều bên, nhiều ứng dụng cùng dùng chung, và khi bị lộ thông tin bên nào sẽ chịu trách nhiệm? Thêm nữa, khi người dùng muốn thu hồi quyền truy cập của một ứng dụng cũng không có cách nào, trừ khi người dùng thay đổi username/password. Tuy nhiên, việc thay đổi username/password lại ảnh hưởng đến tất cả các ứng dụng khác của người dùng. Do đó, OAuth 2.0 đã ra đời, cung cấp giải pháp tốt hơn để cấp phép cho ứng dụng truy cập API mà không cần tiết lộ thông tin xác thực của người dùng.