Vừa mới thực hiện tích hợp SIWE cho một dự án và muốn chia sẻ những gì tôi đã học được vì quá trình này thực sự khá đơn giản sau khi bạn hiểu được ý tưởng cốt lõi.



Vì vậy, đây là điều về Đăng nhập bằng Ethereum - nó về cơ bản là một cách xác minh rằng bạn thực sự sở hữu một địa chỉ ví. Khi bạn kết nối ví của mình với một dapp, frontend biết bạn là ai, nhưng backend không có cách nào xác minh rằng bạn không chỉ là người tự xưng là địa chỉ đó. SIWE giải quyết điều này bằng cách yêu cầu bạn ký một tin nhắn, điều này chứng minh quyền sở hữu. Nó tương tự như cách các giao dịch hoạt động - bạn ký một thứ gì đó bằng khóa riêng của mình.

Quy trình chia thành ba bước chính: kết nối ví, ký một tin nhắn, rồi nhận một token danh tính. Quy trình khá rõ ràng khi đã hiểu.

Bây giờ, không phải mọi dapp đều cần SIWE. Nếu bạn xây dựng một thứ như trình duyệt blockchain nơi người dùng chỉ truy vấn dữ liệu công khai, bạn thực sự không cần. Nhưng nếu dapp của bạn có tài khoản người dùng hoặc xử lý dữ liệu nhạy cảm, SIWE trở nên rất hữu ích.

Tôi đã sử dụng Next.js cho phần triển khai full-stack vì bạn có thể xử lý cả frontend lẫn backend trong cùng một dự án. Bắt đầu với các gói npm như Ant Design Web3 và Wagmi - chúng xử lý phần lớn công việc nặng nhọc. Bạn có thể cài đặt các phụ thuộc chính qua npm chỉ với một lệnh, giúp tiết kiệm rất nhiều thời gian thiết lập.

Quy trình ký bao gồm việc lấy một nonce từ backend của bạn trước. Nonce này là duy nhất cho mỗi địa chỉ và ngăn chặn các cuộc tấn công phát lại. Sau đó, bạn tạo một tin nhắn bao gồm nonce, tên miền và ID chuỗi, ký nó bằng ví của bạn, rồi gửi tất cả trở lại backend để xác minh. Nếu chữ ký hợp lệ, bạn sẽ nhận được một token JWT cho các yêu cầu sau này.

Một điều tôi nhận thấy - sử dụng các nút RPC mặc định khiến việc xác minh mất khoảng 30 giây, điều này rất tệ cho trải nghiệm người dùng. Chuyển sang dịch vụ nút riêng (mình dùng ZAN) đã giảm thời gian đó đáng kể. Chắc chắn đáng để tối ưu nếu bạn định triển khai sản phẩm thật.

Lời nhắc về bảo mật từ tài liệu là rất quan trọng: mã demo họ cung cấp chỉ mang tính giáo dục. Đối với sản phẩm thực, bạn cần xử lý JWT đúng cách, giới hạn tốc độ truy cập và các biện pháp bảo vệ khác. Đừng chỉ sao chép mã ví dụ vào môi trường sản xuất.

Nếu bạn xây dựng một dapp cần xác thực người dùng, SIWE gần như là phương pháp tiêu chuẩn hiện nay. Hệ sinh thái npm đã trưởng thành đủ để việc tích hợp trở nên ít đau đớn hơn nhiều so với trước đây.
ETH-0,84%
Xem bản gốc
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
  • Phần thưởng
  • Bình luận
  • Đăng lại
  • Retweed
Bình luận
Thêm một bình luận
Thêm một bình luận
Không có bình luận
  • Ghim