Authentication and Authorization cho Client ID request với WebDAV – SFCC

Convert tool
Convert tool

Bài này chúng ta sẽ nói về chứng thực và phân quyền cho Client ID (Authentication and Authorization cho Client ID) để upload file lên Salesforce Commerce Cloud (SFCC) thông qua webdav.

Mục tiêu của Authentication and Authorization cho Client ID

Trước tiên ta cần phải hiểu authentication là gì? và Authorization là gì?
Hiểu nôn na, authentication là xác định bạn là ai khi truy cập vào server, và authorization cho phép bạn truy cập vào tài nguyên nào trên server đó. Tương tự như khi bạn bước vào một khách sạn, lễ tân sẽ yêu cầu bạn trình CCCD để xác định bạn là ai (authentication), sau đó giao cho bạn chìa khóa, chỉ cho phép bạn mở cửa những nơi bạn được phép vào như phòng của bạn, phòng ăn chung, phòng gym,.. (authorization).

Lan man quá, tóm lại mục tiêu của bài viết này là hướng dẫn tạo và phân quyền cho 1 client ID có thể upload file lên Webdav của Salesforce Commerce Cloud (SFCC).

Case Study

Ở đây mình đưa ra 2 case study thường gặp nhất

Upload files từ convert tool

Hầu hết các hệ thống thương mại điện tử sử dụng khá nhiều hệ thống thứ 3 (third-party) để vận hành doanh nghiệp của mình, như ERP, CDP, OMS, WMS, SCS, PCS, PIM, BI, CMS, Email Marketing, ….

Mỗi hệ thống như thế có cấu trúc dữ liệu khác với SFCC, và có thể xuất dữ liệu ở định dạng file khác nhau. Vì thế, để có thể liên kết các hệ thống như thế với EC Site (SCSS), thường cần phải có 1 tool trung gian để convert các định dạng dữ liệu khác nhau về đúng với schema xml của SFCC để có thể import vào. Vì trên SFCC khá hạn chế trong việc xử lý file và các dữ liệu lớn. Các hệ thống thường dùng như Boomi của Dell, SAP, Celigo, Flowgear, IBM Cloud Integration, Qlik, MuleSoft,…., hoặc tự build 1 tool đơn giản để convert theo đúng mục đích của mình, tiết kiệm chi phí.

Có 2 cách để import dữ liệu vào SFCC

– hoặc là tạo JOB trên SFCC để đi đọc file trong SFTP/FTP – nơi chứa file output sau khi convert, sau đó import vào SFCC,
– hoặc là từ convert tool, upload trực tiếp lên SFCC thông qua giao thức webdav (Các bạn có thể tìm hiểu hơn về sự khác biệt giữa giao thức webdav và http).
Thường thì dùng cách ở trên, đơn giản, dễ xử lý

Nhưng, có 1 loại dữ liệu, thường phải chủ động upload trực tiếp lên SFCC từ hệ thống bên ngoài, đó là hình ảnh sản phẩm (catalog images), những hình ảnh này thường sẽ được upload trực tiếp lên directory của master catalog (catalog chứa thông tin sản phẩm).
Đây chính là case study thứ nhất.

Convert tool - Authentication and Authorization cho Client ID
Convert tool

(ps: mình sẽ có một bài phân tích kỹ hơn về cách tạo và quản lý catalogs cho nhiều sites.)

Upload cartridges

Để deploy code (cartridges) lên môi trường staging, chúng ta cũng cần quyền truy cập của Client ID vào Cartridge directory.
Đây là Case Study thứ 2.

Bên mình thường hay build jenkins để build static file (scss/js) và deploy lên các môi trường. Đơn giản là nó miễn phí, dễ build, nhiều plugin :D.

Mình cũng sẽ có một bài hướng dẫn chi tiết về setup 1 jenkins để deploy lên SFCC.

Deploy Cartridges - Authentication and Authorization cho Client ID
Deploy Cartridges

Authentication and Authorization cho Client ID

Với 2 case study thường gặp đó, mình cần phải tạo và config Client ID như thế nào để work được. Let’s go!

Authentication

Để có thể tạo Client ID, cần phải có quyền truy cập vào API Client như hình bên dưới.

API Client Menu - Authentication and Authorization cho Client ID
API Client Menu

Bấm vào nút “Add API Client” như hình trên để thêm mới một API Client.

Display Name: Đặt tên cho API Client. Nên đặt tên dễ phân biệt Client ID nào sử dụng cho mục đích gì và cho môi trường nào.
Organizations: Thêm organization, nơi quản lý các môi trường bạn muốn upload file. Bạn cần phải có quyền quản lý organization đó thì mới có thể thêm được.
Roles: Sau khi thêm organization và role “Salesforce Commerce API”, bạn sẽ thấy được danh sách các môi trường mà organization đó đang có. Bạn sẽ chọn môi trường nào bạn muốn upload, hoặc chọn tất cả.
Token Endpoint Auth Method: private_key_jwt
Access Token Format: JWT
Các fields khác để mặc định.

Config API Client - Authentication and Authorization cho Client ID
Config API Client

Đến đây, mới chỉ xong việc cho phép Client ID đó có quyền truy cập vào các môi trường. Để có thể upload file lên directory như Catalogs, Cartridges, Impex,… hãy xem tiếp phần dưới, Authorization.

Authorization

Để cấu hình cho phép Client ID nào có thể truy cập vào tài nguyên nào trên môi trường nào. Vào Business Manager (BM) và vào menu bên dưới để cấu hình.

Administration > Organization > WebDAV Client Permissions
WebDAV Client Application Permissions - Authentication and Authorization cho Client ID
WebDAV Client Application Permissions

Xong rồi đó, giờ có thể upload file lên SFCC thông qua webdav ở bất cứ nơi đâu.

Test thử với Postman

Lấy Bearer Token

Thông tin request:
Host: https://account.demandware.com/dw/oauth2/access_token
Method: POST
Request Body: grant_type:client_credentials
Authorization: Basic (Client ID/Client Password)

Xem hình, các bạn sẽ thấy sau khi mình gửi request, kết quả trả về mình sẽ set vào biến môi trường “Authorization_key”. Mục đích chỉ là mình lười copy/paste vào giá trị của Authorization ở request tiếp theo thôi.

Kiểm tra danh sách directory trên môi trường

Mình sẽ thử request xem trên Cartridge directory đã deploy những version code nào nha.

Khi request bằng giao thức webdav, mình chỉ cần thêm Authorization với giá trị là token đã lấy ở trên vào request header là được.

Tham khảo

  1. https://documentation.b2c.commercecloud.salesforce.com/DOC1/topic/com.demandware.dochelp/content/b2c_commerce/topics/permissions/b2c_web_dav_client_permissions.html?cp=0_6_3_2_2
  2. https://viblo.asia/p/phan-biet-su-khac-nhau-giua-authentication-va-authorization-Eb85oad4Z2G
  3. https://hdkhanh.com/use-external-image-on-ods-salesforce-commerce-cloud/

Bình luận

Email của bạn sẽ không được hiển thị công khai.

14 + sixteen =