API nghỉ ngơi Magento 2 - Cách quản lý vòng đời xác thực API trên ứng dụng thiết bị di động?


9

Trong API web Magento [2.2.4] khi tôi chuyển tên người dùngmật khẩu thì nó sẽ tạo mã thông báo cho khách hàng cụ thể đó (chỉ có hiệu lực trong 1 giờ - có thể định cấu hình từ quản trị viên)

http://magento.host/index.php/rest/V1/integration/customer/token?username=test.user@test.com&password=test@123

trả về mã thông báo.

Sau khi tạo mã thông báo, khi chúng tôi chuyển mã thông báo đó trong tiêu đề.

Ủy quyền :: Bearer * Giá trị mã thông báo *

http://magento.host/index.php/rest/V1/customers/me

Mà trả về chi tiết khách hàng.

Trường hợp trên tôi đã giải thích là hoạt động tốt cho webAPI trong magento2 mà tôi đã thử nghiệm trong POSTMAN .

Bây giờ trường hợp là,

Mỗi giờ tái tạo mã thông báo và sau đó đăng nhập lại mỗi giờ là không hợp lý cho Ứng dụng di động.

Sau đó, Magentop quản lý dữ liệu đăng nhập và xác thực người dùng trong ứng dụng Di động như thế nào, nếu nó được phát triển API theo Hợp đồng dịch vụ

  • Bao lâu tôi nên cho phép tôi truy cập mã thông báo để tồn tại trước khi nó hết hạn trong ứng dụng di động?
    • Tôi không muốn buộc người dùng của mình xác thực lại mỗi giờ trong Ứng dụng di động.
    • Cách quản lý vòng đời mã thông báo API OAuth2 của bạn cho Ứng dụng di động.

Thực hiện các thay đổi trong Mã thông báo truy cập Số giờ trọn đời sẽ không phải là giải pháp hợp lý, vì Ứng dụng và web nên có số giờ mã thông báo khác nhau

nhập mô tả hình ảnh ở đây


Bạn đã thử kéo dài tuổi thọ mã thông báo từ cửa hàng-> cấu hình-> dịch vụ-> OAuth-> Mã thông báo khách hàng trọn đời (Giờ) -?
Manthan Dave

Không, kiểm tra nó bằng cách tạo một giá trị trống của Mã thông báo khách hàng trọn đời (Giờ) - sẽ vô hiệu hóa tính năng nếu giá trị trống. Vì vậy, có thể làm việc.
Aditya Shah

Sẽ không vì khi chúng tôi làm trống giá trị của Mã thông báo khách hàng trọn đời thì nó sẽ tạo lại mã thông báo mỗi yêu cầu và tất cả dữ liệu sẽ không hết hạn (mọi dữ liệu yêu cầu) và nó sẽ được lưu trữ trong oauth_token
Aditya Shah

Nếu bạn có quyền truy cập vào mã của cửa hàng bạn đang kết nối hoặc bạn có thể viết mô-đun magento cho ứng dụng của mình, một giải pháp sẽ là cập nhật mã thông báo ngày hợp lệ tại mỗi yêu cầu khi mã thông báo của khách hàng được sử dụng, tương tự như phiên được thực hiện. Sau đó, cho đến khi ứng dụng của bạn thực hiện bất kỳ yêu cầu nào trong vòng đời, khách hàng sẽ không bị buộc phải ủy quyền lại.
Zefiryn

nhưng dựa trên cờ nào chúng tôi xem xét mã thông báo khách hàng đó được sử dụng.
Aditya Shah

Câu trả lời:


3

Để kiểm tra mã thông báo khách hàng hợp lệ Magento kiểm tra hai tiêu chí

  1. Mã thông báo bị thu hồi (Điều đó xảy ra khi đăng xuất của người dùng): đã thu hồi được lưu dưới dạng 1 trong bảng oauth_token
  2. Mã thông báo thực sự có mặt trong oauth_tokenbảng

Magento chạy một cron để loại bỏ các mã thông báo đã hết hạn (theo thời gian tồn tại trong cài đặt quản trị viên) khỏi bảng ( vendor\magento\module-integration\Cron\CleanExpiredTokens.php)

Giải pháp có thể

  1. Tăng tuổi thọ mã thông báo từ quản trị viên
  2. Ghi đè cron đã đề cập ở trên để chỉ xóa mã thông báo bị thu hồi tức là mã thông báo khách hàng đã đăng xuất

Hy vọng điều này trả lời câu hỏi của bạn


Tôi cảm thấy bạn đang nói về vai trò của người dùng? như quản trị viên ... cũng vui lòng chấp nhận câu trả lời
Vishwas Bhatnagar

Không, tôi đang nói về xác thực M2 được sử dụng trong ứng dụng di động trong back-end, bởi vì mỗi giờ tái tạo mã thông báo và sau lần đăng nhập đó mỗi giờ không hợp lý cho Ứng dụng di động. Nó chỉ nên được xác thực một lần và khi người dùng thay đổi mật khẩu (hoạt động như vậy)
Aditya Shah

Tôi nghĩ rằng tôi đã đề xuất một giải pháp cho câu trả lời trên của mình, chúng tôi đang sử dụng cùng một giải pháp và làm việc hoàn hảo cho chúng tôi
Vishwas Bhatnagar

1
Cảm ơn người đàn ông !! Tôi đã tìm kiếm rất nhiều nhưng không tìm thấy giải pháp nào ngoại trừ giải pháp của bạn :)
Aditya Shah
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.