[Luyện thi] Magento 2 Certified Solution Specialist - part 2.2

Trong phần này, chúng ta cùng tìm hiểu các nội dung sau:

  • What is API
  • Types of API in Magento
  • API authentication
  • API users
  • Differences between Magento 1 and Magento 2 integration options.
  • Third-party integrations with Magento Open Source and Magento Commerce.

1. What is API

  • Application programming interface
  • Giúp 2 ứng dụng khác nhau có thể giao tiếp được với nhau qua việc gửi request và nhận response.

References: https://en.wikipedia.org/wiki/Application_programming_interface

2. Types of API in Magento

Magento supports 2 kiểu API: REST & SOAP

Bảng so sánh 2 kiểu API này:

Tổng kết lại thì đặc điểm mỗi loại này như sau:

  • SOAP: phù hợp khi cần xây dựng API để kết nối các ứng dụng doanh nghiệp, cần độ bảo mật cao. Ví dụ các lĩnh vực liên quan đến tài chính, cổng thanh toán. Tuy nhiên SOAP có performance thấp, phức tạp và kém linh hoạt.

    • Enterprise apps, high-security apps, distributed environment, financial services, payment gateways, telecommunication services.
    • High security, standardized, extensibility.
    • Poorer performance, more complexity, less flexibility.
  • REST: phù hợp cho các ứng dụng cần public API (ví dụ các API public của Facebook). REST bảo mật kém hơn SOAP, nhưng lại có Performance tốt hơn, linh hoạt và khả năng mở rộng cao hơn.

    • Public APIs for web services, mobile services, social networks.
    • Scalability, better performance, browser-friendliness, flexibility.
    • Less security, not suitable for distributed environments.
    • Chú ý: Magestore POS đang sử dụng REST API để kết nối với Magento website

3. API Authentication: Cơ chế xác thực của Magento API

Mục đích: đảm bảo 3rd system chỉ truy cập các dữ liệu của Magento theo đúng quyền được cấp (inventory, customer, order, etc)

Magento support 3 kiểu API authentication:

  • Third-party applications authenticate with OAuth 1.0a.
  • Mobile applications authenticate using tokens.
  • Administrators and customers are authenticated with login credentials.

Oauth 1.0

  • Được thiết kế cho các ứng dụng web. Sử dụng khi cần tích hợp với các ứng dụng web khác (e.g. quickbooks, zoho,…)
  • External applications have access to internal data without revealing or storing any user IDs or passwords.
  • Oauth 2.0: 2012, can be used for Mobile application

Tham khảo: https://devdocs.magento.com/guides/v2.0/get-started/authentication/gs-authentication-oauth.html

Token Based

  • Gọi tên là: Token-based authentication
  • Allow mobile application access internal data of Magento
  • Application must provide access-token for every request to Magento
  • Chú ý Magestore POS đang sử dụng cơ chế xác thực này của Magento để truy cập và đồng bộ dữ liệu với Magento.

Tham khảo: https://devdocs.magento.com/guides/v2.0/get-started/authentication/gs-authentication-token.html

Session Based

  • Gọi tên là: Session-based authentication
  • Used for Administrators and customers
  • Authenticated by their username & password, then get session_id

Tham khảo: https://devdocs.magento.com/guides/v2.0/get-started/authentication/gs-authentication-session.html

4. API users
Có 4 loại API user trong Magento.

  • Guest user
    • Được phép truy cập vào các dữ liệu có quyền là: anonymous permission. Quyền này được quy định trong file cấu hình của từng module.
  • Customer
    • Là customer account của Magento
    • Được phép truy cập vào dữ liệu của chính họ và các dữ liệu có quyền anonymous.
  • Administrator
    • Là admin account của Magento Backend
    • Được phép truy cập vào dữ liệu được cấp quyền, có nghĩa là có thể tuỳ chỉnh. Việc cấp quyền truy cập cho nhóm này được thực hiện trong Magento backend.
  • Integration
    • Là 1 loại user được create trong Magento Backend
    • Được phép truy cập vào dữ liệu được cấp quyền, có nghĩa là có thể tuỳ chỉnh.

5. Differences between Magento 1 and Magento 2 integration options.
Sự khác nhau giữa API của Magento 1 và Magento 2

Điểm khác biệt lớn nhất là cơ chế xác thực Oauth trong Magento 1 là kiểu 3 bước (3 legged) còn Magento 2 là 2 bước (2 legged)

– Xác thực 2 bước –
2-legged

– Xác thực 3 bước –
3-legged

6. Third-party integrations with Magento Open Source and Magento Commerce.

API của Magento 2 Open Source và Magento 2 Commerce giống và khác nhau thế nào?

  • Cùng Support REST & SOAP
  • Cùng Support 3 kiểu authentication
  • Magento Commerce cho phép tương tác với các đối tượng sau
    • CustomerBalance
    • GiftCardAccount
    • GiftRegistry
    • GiftWrapping
    • Reward
    • RMA

Tham khảo: https://devdocs.magento.com/guides/v2.0/rest/list.html


Làm bài test tại: https://stories.magestore.com/t/solution-specialist-t-ng-h-p-bai-test-th-thach-ki-n-th-c-magento-c-a-b-n/343/2

4 Likes

Trình bày sáng sủa rõ ràng nhìn dễ hiểu quá. Thank Alex lọ mọ giờ trưa :wink:

Anh ơi em có 1 vài câu hỏi:

  1. OAth API cũng là 1 dạng token passing, vậy token ở OAth-based API với token ở dạng token-based API khác nhau như thế nào ạ?
  2. Theo như định nghĩa, thì cả admin và integration API user đều có quyền access vào back-end và quyền hạn có thể được configure. Vậy theo 1 cách nào đó thì 2 user này có tương đương nhau k ạ (trong trường hợp là admin và integration cùng đc assign access như nhau)? Gỉa sử mình tạo thêm 1 user trong backend Magento thì user đó là admin hay là integration API user?
  3. PWA POS của Magestore được build trên nền tảng web hay nền tảng App ạ (Progressive Web App) ? Nếu là web thì tại sao lại dùng token-based API mà k dùng OAth-based API ạ?
  4. Order retrieval và complete order flow khác nhau thế nào ạ?
  5. 2-legged OAth có điểm gì cải thiện hơn 3-legged? Theo như em thấy thì nó skip mất phần customer authorize access? Như vậy có phải là tăng tính thuận tiện nhưng giảm bảo mật k ạ?
  6. Customer balance của Magento commerce API là customer store credit balance ạ?

Em cám ơn anh ạ :smiley:

2 Likes

Toàn hỏi khó :))))))))))))))))))) cho đủ 20 ký tự

@anon83484694 A thực sự ấn tượng với các câu hỏi của em. Không phải ai cũng có thể đưa ra đc những câu hỏi như vậy.

  1. Oauth vs Token-Based
  • Oauth dùng cho 3rd application (e.g. Zoho, quickbook) muốn tích hợp với Magento. Để xác thực được thì merchant sẽ ko cung cấp trực tiếp thông tin xác thực cho 3rd Application (vì lý do bảo mật)
  • Token-based: dùng cho việc xác thực giữa client và server. Ở đây server là Magento của merchant và client là 1 ứng dụng (e.g. POS, Report application). Hiểu nôm na là Merchant làm chủ cả 2 phần này, nên họ có thể cung cấp trực tiếp thông tin xác thực cho ứng dụng client.
  • Vì lý do trên mà Magestore POS sử dụng token-based thay vì Oauth
  1. Administrator vs Integration
  • Admin có thể login vào backend, Integration thì ko
  1. PWA POS dùng token-based (lý do trong câu 1)

  2. Order retrieval vs Complete order flow:

  • Order retrieval: Magento 1 API chỉ trả về thông tin Order
  • Complete order flow: create order, invoice, shipment, etc
  1. 2-legged vs 3-legged
  • Theo a tìm hiểu thì 2-legged ko yêu cầu người dùng phải cung cấp thông tin xác thực (username và password) vì trong ứng dụng đã có sẵn auth_key (giống token-based)
  1. Customer balance
    Chính là store credit balance của customer
2 Likes

Dạ em cám ơn anh ạ :smiley: câu trả lời chi tiết quá ạ