Các tổ chức và nhà phát triển gặp phải một trở ngại đáng kể khi chuyển người dùng từ mật khẩu sang khoá truy cập. Mặc dù khoá truy cập mang đến một bản nâng cấp bảo mật quan trọng, nhưng quy trình tạo thủ công thường có thể gây ra sự bất tiện. Trong môi trường thương mại điện tử có lưu lượng truy cập cao, mỗi giây do dự đều có ý nghĩa, vì mọi sự chậm trễ đều có thể làm gián đoạn hành trình mua hàng và dẫn đến việc bỏ dở giỏ hàng. Hơn nữa, việc duy trì trạng thái thông tin đăng nhập được đồng bộ hoá giữa máy chủ và thiết bị của người dùng là điều cần thiết để ngăn chặn lỗi đăng nhập và sự khó chịu của người dùng.
adidas cũng gặp phải những thách thức tương tự. Mục tiêu chính của họ là loại bỏ các điểm phiền hà trong quy trình đăng nhập và đơn giản hoá trải nghiệm trên các nền tảng và thiết bị web và ứng dụng. Mặc dù bảo mật vẫn là ưu tiên hàng đầu, nhưng nhóm sản phẩm đã tập trung vào việc tạo ra quy trình đăng ký và đăng nhập liền mạch nhất có thể bằng khoá truy cập.
Để giải quyết những thách thức này, adidas đã triển khai tính năng Tạo có điều kiện để tự động nâng cấp người dùng mật khẩu lên khoá truy cập và Signal API để duy trì tính nhất quán của thông tin đăng nhập. Ngoài ra, họ đã triển khai Yêu cầu về nguồn gốc có liên quan để hỗ trợ việc sử dụng trên nhiều miền khi cần.
Kết quả
Chiến lược tự động hoá việc tạo khoá truy cập và duy trì trạng thái thông tin đăng nhập của adidas đã mang lại kết quả tức thì và có thể đo lường được về cả mức độ sử dụng và độ tin cậy của quy trình đăng nhập:
- Tỷ lệ chấp nhận cao: Kể từ khi ra mắt quy trình đăng nhập bằng khoá truy cập, adidas đã đạt được tỷ lệ tạo khoá truy cập tổng thể là 47%. Điều này bao gồm cả tính năng Tạo có điều kiện tự động và lựa chọn tham gia do người dùng bắt đầu khi được nhắc trong quy trình đăng ký hoặc đăng nhập. Tỷ lệ sử dụng này đặc biệt cao trên thiết bị di động, với tỷ lệ chuyển đổi là 52% (so với 34% trên máy tính).
- Nâng cấp nhanh chóng bằng tính năng Tạo có điều kiện: Ngoài các lời nhắc rõ ràng, adidas đã đạt được mức tăng 8% về số lượt tạo khoá truy cập bằng cách nâng cấp liền mạch người dùng mật khẩu hiện có ở chế độ nền mà không yêu cầu người dùng thực hiện thao tác thủ công.
- Độ tin cậy gần như tuyệt đối khi đăng nhập: Khoá truy cập mang lại tỷ lệ thành công trên 99% sau khi người dùng bắt đầu đăng nhập. Đây là một bản nâng cấp bảo mật lớn so với tỷ lệ thành công khi dùng mật khẩu trước đây của adidas là 70%. Tỷ lệ này thường giảm do lỗi của con người, chẳng hạn như lỗi chính tả hoặc quên thông tin đăng nhập.
- Giảm thiểu phiền toái và lỗi: Bằng cách triển khai Signal API để tự động đồng bộ hoá thông tin đăng nhập của thiết bị và máy chủ, adidas đã giảm thành công số lỗi
PASSKEY_NOT_FOUNDxuống dưới 0,3% trong số các lần đăng nhập. Điều này giúp loại bỏ hiệu quả sự khó chịu của người dùng khi gặp phải khoá truy cập không liên kết.
47 %
Tỷ lệ tạo khoá truy cập
8 %
Tăng số lượt tạo khoá truy cập bằng tính năng Tạo có điều kiện
>99 %
Tỷ lệ đăng nhập thành công bằng khoá truy cập sau khi bắt đầu
<0,3 %
Tỷ lệ lỗi khoá truy cập không liên kết
Cách adidas giải quyết vấn đề
Sau đây là cách adidas giải quyết những thách thức này:
1. Đẩy nhanh quá trình áp dụng bằng tính năng Tạo có điều kiện
Để giúp người dùng dễ dàng sử dụng khoá truy cập, adidas đã triển khai tính năng Tạo có điều kiện. Tính năng này cho phép một trang web tự động tạo khoá truy cập khi người dùng đăng nhập bằng mật khẩu được lưu trữ trong trình quản lý mật khẩu của họ. Để đảm bảo tỷ lệ thành công cao nhất, hệ thống sẽ gọi API ngay sau khi đăng nhập thành công để hệ thống nhận ra việc sử dụng mật khẩu là gần đây.
const cred = await navigator.credentials.create({
publicKey: options,
mediation: 'conditional' // Enables automatic passkey creation
});
adidas đã tích hợp tính năng này với logic tuỳ chỉnh để trước tiên xác thực môi trường của người dùng. Cụ thể, hệ thống sẽ kiểm tra xem trình duyệt có hỗ trợ tính năng Tạo có điều kiện hay không. Hệ thống cũng tôn trọng lựa chọn ưu tiên của người dùng bằng cách chặn lời nhắc nếu người dùng đã bỏ qua việc tạo khoá truy cập 3 lần trong 6 tháng qua.
Nếu môi trường tương thích, hệ thống sẽ cố gắng tạo khoá truy cập ở chế độ nền, ngay sau khi xác thực người dùng thành công. Thời điểm cụ thể này giúp tăng khả năng đáp ứng các điều kiện tiên quyết. Điều quan trọng là quá trình triển khai sẽ xử lý các trường hợp ngoại lệ WebAuthn theo triết lý "thất bại vẫn cho phép" để luôn ưu tiên quyền truy cập của người dùng. Nếu trình duyệt báo cáo InvalidStateError, cho biết có thể đã tồn tại một khoá truy cập, thì hệ thống sẽ dừng quá trình tạo khoá truy cập ở chế độ nền và đăng nhập ngay cho người dùng. Ngược lại, nếu xảy ra NotAllowedError, tức là các điều kiện cụ thể để tạo tự động không được đáp ứng, hệ thống sẽ phát hiện trạng thái này và hướng dẫn người dùng đến màn hình "Trình thu thập khoá truy cập" để hướng dẫn họ thực hiện quy trình thiết lập thủ công. Bằng cách phân biệt giữa những hạn chế về kỹ thuật và hành vi của người dùng, adidas đảm bảo rằng việc thúc đẩy nâng cấp khoá truy cập sẽ nâng cao trải nghiệm đăng nhập thay vì làm gián đoạn trải nghiệm này.
2. Đảm bảo độ tin cậy bằng Signal API
Khi người dùng quản lý thông tin đăng nhập trên nhiều thiết bị, có thể xảy ra tình trạng không nhất quán. Ví dụ: một khoá truy cập có thể bị xoá khỏi máy chủ nhưng vẫn còn trên thiết bị của người dùng. Để ngăn chặn lỗi đăng nhập do thông tin đăng nhập "ảo" này gây ra, adidas đã triển khai Signal API. API này cho phép máy chủ báo hiệu trạng thái của thông tin đăng nhập cho nhà cung cấp khoá truy cập.
adidas sử dụng cả 3 phương thức Signal API hiện có để duy trì tính nhất quán này. Thay vì đoán xem nên xoá thông tin đăng nhập nào, adidas sẽ liên kết các sự kiện cụ thể trong vòng đời của người dùng với lệnh gọi API thích hợp:
- Lỗi đăng ký: Khi một khoá truy cập được tạo trên ứng dụng nhưng không đăng ký được trên máy chủ phụ trợ, adidas sẽ dùng
signalUnknownCredentialđể xoá ngay thông tin đăng nhập không liên kết. - Đăng nhập không hợp lệ: Nếu người dùng cố gắng đăng nhập bằng khoá truy cập đã bị thu hồi hoặc đã lỗi thời,
signalUnknownCredentialsẽ báo hiệu cho nhà cung cấp để ẩn khoá truy cập đó. - Quản lý người dùng: Khi người dùng xoá khoá truy cập một cách rõ ràng trong phần cài đặt tài khoản,
signalAllAcceptedCredentialssẽ đồng bộ hoá danh sách cho phép. Điều này đảm bảo khoá truy cập đã xoá không còn được cung cấp nữa. - Thông tin cập nhật về tài khoản: Khi người dùng thay đổi email hoặc tên người dùng,
signalCurrentUserDetailssẽ cập nhật siêu dữ liệu trên thiết bị cho phù hợp với máy chủ.
// Detect authentication failure due to lack of the credential
if (result.status === 404) {
if (PublicKeyCredential.signalUnknownCredential) {
await PublicKeyCredential.signalUnknownCredential({
rpId: "adidas.com",
credentialId: "..." // base64url encoded credential ID
});
}
}
3. Hợp nhất quyền truy cập bằng Related Origin Requests (Yêu cầu về nguồn gốc liên quan) và Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số)
Để hỗ trợ thêm cho cấu trúc đa thị trường của mình, adidas đã triển khai Yêu cầu về nguồn gốc liên quan. Mặc dù hầu hết người dùng đều chỉ truy cập vào thị trường địa phương (ví dụ: adidas.nl), nhưng cấu hình này cho phép những người dùng di chuyển giữa các khu vực sử dụng lại khoá truy cập trên các miền được phép bằng cách nhắm đến một Mã nhận dạng bên đáng tin cậy (adidas.com).
Để bật tính năng này, adidas lưu trữ tệp cấu hình webauthn tại miền Relying Party ID (RP ID) chính của họ. Tệp này chứa một danh sách cho phép rõ ràng gồm các nguồn được phép sử dụng adidas.com để đăng ký và xác thực khoá truy cập. Bằng cách xác định các mối quan hệ này, trình duyệt có thể xác minh rằng khoá truy cập được tạo trên một trang web theo khu vực là hợp lệ để sử dụng trên một trang web khác, mang lại trải nghiệm liền mạch cho người dùng trên toàn cầu.
// https://www.adidas.com/.well-known/webauthn
{
"origins": [
"https://www.adidas.fi",
"https://www.adidas.nl",
// ... abridged (the full file lists 50+ regional domains)
]
}
Điều quan trọng là adidas cũng cung cấp tính năng hỗ trợ khoá truy cập liền mạch trong các ứng dụng di động Android của họ bằng cách sử dụng Digital Asset Links. Vì các ứng dụng này sử dụng WebView được lưu trữ trên idp.adidas.com để xác thực, nên Digital Asset Links (Đường liên kết đến tài sản kỹ thuật số) là cần thiết để thiết lập mối quan hệ tin cậy giữa ứng dụng Android và Mã nhận dạng bên đáng tin cậy (adidas.com). Quy trình xác minh này cho phép ứng dụng truy cập vào cùng một khoá truy cập được dùng trên web, mang đến trải nghiệm đăng nhập mượt mà và thống nhất trên các nền tảng.
Để đạt được điều này, adidas lưu trữ một tệp Digital Asset Links (assetlinks.json) trên các miền web tương ứng của họ. Tệp này công khai khai báo mối liên kết mã hoá với các ứng dụng Android của họ. Tương tự, để hỗ trợ hệ sinh thái iOS, adidas sử dụng Miền được liên kết.
Bằng cách lưu trữ tệp apple-app-site-association, họ thiết lập một kết nối an toàn cho phép ứng dụng iOS của họ sử dụng khoá truy cập một cách an toàn trong chế độ xem web.
// https://www.adidas.fi/.well-known/assetlinks.json
[
{
"relation": [
"delegate_permission/common.handle_all_urls",
"delegate_permission/common.get_login_creds"
],
"target": {
"namespace": "android_app",
"package_name": "com.adidas.app",
"sha256_cert_fingerprints": [
"B2:55:43:78:89:F6:F6:FD:BB:16:5C:43:EE:66:14:18:D4:E8:33:6D:3A:1F:68:86:C3:A8:7C:89:2B:51:45:96",
"..."
]
}
},
// ... abridged
]
adidas sẽ làm gì tiếp theo?
Với nền tảng vững chắc về các bản nâng cấp tự động và thông tin đăng nhập được đồng bộ hoá trên adidas.fi và adidas.nl, adidas sẽ triển khai chế độ thiết lập liền mạch này cho tất cả các thị trường khác trên toàn cầu muộn nhất vào cuối tháng 4 năm 2026. Ngoài ra, adidas đang khám phá thêm nhiều trải nghiệm đăng nhập suôn sẻ hơn nữa bằng cách thử nghiệm thử nghiệm nguồn gốc dàn xếp ngay lập tức. Trong tương lai, chúng tôi dự định cho phép người dùng tạo tài khoản trực tiếp bằng khoá truy cập. Thay đổi này sẽ loại bỏ yêu cầu hiện tại là phải đăng ký bằng một phương thức thay thế trước. Nhóm cũng đang điều tra "cơ chế kích hoạt thông minh" để trực tiếp gọi hộp thoại khoá truy cập hệ thống ở bước thứ hai của quy trình đăng nhập. Điều này giúp người dùng không cần nhấp thêm khi có độ tin cậy cao rằng họ có khoá truy cập trên thiết bị hiện tại.
Tại sao điều này lại quan trọng đối với bạn
Việc chuyển sang xác thực không cần mật khẩu sẽ thành công khi trải nghiệm người dùng vẫn liền mạch. Bằng cách triển khai tính năng Tạo có điều kiện, bạn có thể dễ dàng di chuyển người dùng khỏi mật khẩu mà không làm gián đoạn thói quen của họ. Bằng cách sử dụng Yêu cầu liên quan đến nguồn gốc, bạn có thể chia sẻ các khoá truy cập đó trên các miền của mình, cho phép người dùng truy cập liền mạch vào toàn bộ hệ sinh thái của bạn bằng một khoá truy cập duy nhất. Cuối cùng, việc kết hợp API này với Signal API sẽ đảm bảo trải nghiệm hợp nhất, không cần mật khẩu của bạn luôn đáng tin cậy và không có lỗi.