Authentication xác thực với OpenID, Authorization phân quyền với OAuth

Mở đầu

Khi mới bắt đầu học về web mình được học về cách thiết kế 1 trang web và phần mở đầu đó là login cho trang web

Quy trình sẽ là từ client gửi user name và password và check trong Database xem có đúng userName và password này không sau đó trả lại client trang web cho khách hàng

sau đó được học sử dụng session và cookie để lưu trữ và biết người đó đã đăng nhập chưa cho các phiên làm việc tiếp theo.

Tuy nhiên thầy giáo mới bảo việc lưu trữ như thế là không hiệu quả và an toàn và tiếp tục được tìm hiểu thêm một khái niệm mới đó là Oauth.

Để biết Oauth là gì thì chúng ta cần hiểu một chút về Authentication.

Hiểu đơn giản, Authentication có nghĩa là xác thực người dùng thông qua việc đăng nhập (có thể tìm hiểu thêm mình chỉ nêu tạm khái niệm). Giờ thì giải thích về Oauth nhé

Oauth là một trong những cách xác thực người dùng đó mà không cần sử dụng đến userName và password

Có một bài toàn dành cho người dùng và cá nhân mình cùng gặp phải đó là việc phải nhớ quá nhiều tài khoản trong khi các application ngày càng nhiều, chuyện gì sẽ xảy ra khi mình phải nhớ quá nhiều tài khoản của các ứng dụng trên -> quá mệt mỏi

  • Để giải quyết bài toán đó và mình được học về OpenID và Oauth:

OpenID là một tiêu chuẩn mở (open standard) dùng cho việc xác thực người dùng thông qua các nhà cung cấp dịch vụ OpenID còn được gọi là OpenID provider (như Google, Facebook, Twitter…) được sử dụng trong việc xác thực

OpenID provider có thể là các ông lớn như Facebook, Twitter, Google Plus

Với sự phát triển của các trang mạng xã hội như Facebook, Twitter, Google Plus thì việc sử dụng OpenID thay cho việc login truyền thống là quá tuyệt vời

Application muốn sử dụng OpenID :

Application: bạn là ai mà muốn vào web của tôi ?(muốn vào trang web của tôi là cần login)

User           : tôi muốn dùng OpenID để xác nhận danh tính(tôi đã có tài khoản FB, twitter, google login qua đấy được không)

Application: ok xác nhận đi (Application ném cho user một url đó là url của OpenID provider)

User.          : xong rồi đấy (thực hiện đăng nhập với OpenID provide)

Application: don, bạn có thể vào web của tôi (application nhận được thông tin từ dưới dự bảo lãnh của OpenID provider)

Thực chất lúc này OpenID provider cấp cho application 1 cái IdToken dưới sự cho phép của user khi đó việc authentication được thực hiện thành công mà không cần đến việc đăng kí tài khoản và nhớ tài khoản trên application này 

OAuth là tiêu chuẩn mở được dùng trong việc trao quyền cho một ứng dụng (client) truy cập các dịch vụ của ứng dụng khác (service provider).

OAuth 2

  1. Application yêu cầu ủy quyền để truy cập vào Resource Server thông qua User
  2. Nếu User ủy quyền cho yêu cầu trên, Application sẽ nhận được giấy ủy quyền từ phía User (dưới dạng một token string)
  3. Application gửi thông tin định danh (ID) của mình kèm theo giấy ủy quyền của User tới Authorization Server
  4. Nếu thông tin định danh được xác thực và giấy ủy quyền hợp lệ, Authorization Server sẽ trả về cho Application access_token. Đến đây quá trình ủy quyền hoàn tất.
  5. Để truy cập vào tài nguyên (resource) từ Resource Server và lấy thông tin, Application sẽ phải đưa ra access_token để xác thực.
  6. 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 Application.

Tổng kết

Với OpenID là quá trình xác thực với người dùng còn với OAuth là qúa trình uỷ quyền cho người tuy nhiên với sự phát triển mạnh mẽ của OAuth 2 ngày này đó là quá trình uỷ quyền để xác thức, thì OAuth 2 là một sự lựa chọn đang được phổ biết nhất hiện nay 

 

Add a Comment

Scroll Up