Các cấu trúc kinh doanh hiện đại thường trải rộng trên nhiều miền riêng biệt.
Các tổ chức duy trì môi trường chuyên biệt cho nhiều tính năng, chẳng hạn như brand.example cho hoạt động tiếp thị, service-app.example cho sản phẩm cốt lõi và support-portal.example cho dịch vụ khách hàng. Tốt nhất là bạn nên cung cấp trải nghiệm đăng nhập một lần, hợp nhất khi người dùng di chuyển giữa các tài sản này.
Tuy nhiên, các nhóm kỹ thuật thường tích hợp những miền này bằng các kỹ thuật đặc biệt gây ra sự phân mảnh. Điều này làm gián đoạn hoạt động quản lý thông tin đăng nhập của trình duyệt tích hợp sẵn bằng cách làm gián đoạn quy trình tự động điền của trình quản lý mật khẩu và làm chậm quá trình áp dụng khoá truy cập.
Nếu cùng một tài khoản trải rộng trên nhiều miền, thì người dùng phải nhận ra rằng các miền đó thuộc cùng một tổ chức và cung cấp cùng một thông tin đăng nhập khi đăng nhập. Trong trường hợp xấu nhất, người dùng sẽ tạo một tài khoản trùng lặp hoặc tiết lộ mật khẩu cho một trang web lừa đảo.
Tìm hiểu cách sử dụng các tiêu chuẩn và giải pháp về cấu trúc (chẳng hạn như siêu dữ liệu, iframe trên nhiều nguồn gốc, liên kết danh tính và hợp nhất miền con) để giải quyết tình trạng phân mảnh danh tính trên nhiều miền và mang đến hành trình liền mạch cho người dùng.
Các giải pháp thường gặp
Các tổ chức sử dụng một số kỹ thuật đã được thiết lập để duy trì hành trình trên nhiều miền. Mặc dù các phương pháp này rất phổ biến, nhưng chúng gặp phải những rào cản về cấu trúc khi các trình duyệt thực thi các ranh giới nghiêm ngặt hơn về quyền riêng tư và các tiêu chuẩn bảo mật.
Yêu cầu tìm nạp CORS
Khi các miền hoạt động độc lập, giao diện người dùng thường dựa vào các yêu cầu fetch() trên nhiều nguồn gốc hướng đến một API xác thực tập trung. API này có thể được cho phép một cách an toàn bằng cách sử dụng Giao thức Chia sẻ tài nguyên trên nhiều nguồn gốc (CORS).
Vì trình duyệt thường chặn hoặc hạn chế cookie trên nhiều trang web, nên nhà phát triển có thể thiết kế rõ ràng các API này để trả về mã thông báo xác thực, chẳng hạn như JSON Web Token (JWT) trong tải trọng JSON thay vì dựa vào tiêu đề Set-Cookie.
Chia sẻ cơ sở dữ liệu tài khoản
Để hợp nhất danh tính ở phần phụ trợ mà không cần tích hợp phần giao diện người dùng phức tạp, bạn có thể tập trung kho lưu trữ dữ liệu người dùng của họ. Mặc dù nhiều miền xác thực dựa trên cùng một cơ sở dữ liệu, nhưng trải nghiệm đăng nhập trên giao diện người dùng của các miền này vẫn tách biệt. Điều này buộc người dùng phải nhớ những miền mà họ đã sử dụng cùng một thông tin đăng nhập, dẫn đến trải nghiệm không tốt cho người dùng.
Vấn đề với việc đăng nhập rời rạc
Mặc dù các giải pháp kỹ thuật có thể đạt được chức năng cơ bản, nhưng chúng không mang lại trải nghiệm liền mạch. Luồng đăng nhập rời rạc sẽ tạo ra các điểm gây khó chịu, ảnh hưởng đến cả khả năng sử dụng và tính bảo mật.
Phân mảnh trình quản lý mật khẩu
Điểm gây trở ngại lớn nhất là sự gián đoạn của trình quản lý mật khẩu. Trình quản lý mật khẩu liên kết thông tin đăng nhập đã lưu trữ với nguồn gốc cụ thể nơi thông tin đăng nhập được đăng ký. Điều này ngăn trình duyệt cung cấp tính năng tự động điền trên nhiều miền, ngay cả khi các miền đó thuộc cùng một tổ chức.
Khi người dùng chuyển từ một miền có thông tin đăng nhập đã lưu sang một miền mới trong tổ chức của bạn, trình quản lý mật khẩu sẽ không nhận ra mối quan hệ này và không kích hoạt lời nhắc tự động điền. Điều này gây ra sự phiền hà khi nhập dữ liệu theo cách thủ công. Người dùng phải tìm thông tin đăng nhập, đặt lại mật khẩu hoặc tạo một tài khoản trùng lặp.
Vì trình quản lý mật khẩu không đáng tin cậy trên các tài sản này, nên người dùng có thể bỏ dùng các công cụ cho những trang web này. Thay vào đó, họ thường tạo mật khẩu yếu, dễ nhớ để sử dụng lại ở nơi khác, điều này làm giảm tính bảo mật tổng thể của tổ chức bạn.
Cổng lừa đảo
Sự gián đoạn này hoạt động như một cổng lừa đảo. Việc trình quản lý mật khẩu từ chối tự động điền trên một miền không xác định là cơ chế bảo vệ chính. Bằng cách yêu cầu người dùng nhập thông tin đăng nhập theo cách thủ công trên các URL khác nhau, bạn vô tình huấn luyện người dùng của mình trở thành nạn nhân của các cuộc tấn công lừa đảo.
Khoanh vùng quảng cáo bằng khoá truy cập
Bạn sẽ gặp nhiều khó khăn hơn khi sử dụng khoá truy cập. Kiến trúc bảo mật cốt lõi của WebAuthn liên kết khoá truy cập một cách chặt chẽ với một Mã nhận dạng bên phụ thuộc (RP ID) cụ thể bằng phương pháp mã hoá.
Thao tác này sẽ tạo ra một "RP ID Trap". Khoá truy cập đã đăng ký trên brand.example không dùng được trên service-app.example vì trình duyệt từ chối quyền truy cập trên nhiều miền. Để tránh nhắc người dùng đăng ký các khoá truy cập riêng biệt cho mọi trang web, bạn phải hợp nhất các thuộc tính này thành một mã nhận dạng RP duy nhất.
Các phương pháp được đề xuất
Để thiết lập tính liên tục của danh tính, bạn phải chuyển từ các quy trình tích hợp đăng nhập đặc biệt sang áp dụng các tiêu chuẩn kiến trúc được công nhận:
- Sử dụng tệp cấu hình siêu dữ liệu: Lưu trữ các tệp siêu dữ liệu như Đường liên kết đến tài sản kỹ thuật số và Yêu cầu về nguồn gốc liên quan để thiết lập một chuỗi tin cậy mật mã. Điều này cho phép chia sẻ thông tin đăng nhập và khoá truy cập một cách liền mạch trên nhiều miền và ứng dụng di động. Đây là một phương pháp sửa lỗi thầm lặng và có chi phí thấp cho tình trạng phân mảnh danh tính, không yêu cầu tái cấu trúc phức tạp cơ sở hạ tầng web hiện có.
- Sử dụng iframe nhiều nguồn gốc: Nhúng một nguồn xác thực tập trung dưới dạng iframe trong một bên đáng tin cậy để kết nối thông tin xác thực đã lưu và khoá truy cập trên nhiều trang web. Phương pháp này sử dụng Chính sách về quyền và cookie được phân vùng để mang đến trải nghiệm đăng nhập liền mạch, theo ngữ cảnh, đồng thời duy trì các ranh giới bảo mật nghiêm ngặt thông qua CSP và tính năng nhắn tin giữa các tài liệu.
- Tuân theo quy trình liên kết danh tính tiêu chuẩn: Áp dụng các giao thức theo tiêu chuẩn ngành như OpenID Connect để tập trung hoạt động xác thực trên một miền Nhà cung cấp danh tính (IdP) chuyên dụng. Điều này chính thức hoá quy trình đăng nhập thông qua các lệnh chuyển hướng an toàn, thay thế các quy trình tích hợp dễ bị lỗi bằng một giải pháp đáng tin cậy và có khả năng mở rộng của bên thứ nhất.
- Hợp nhất các miền con: Chuyển đổi sang các miền con trong một miền gốc chung. Điều này cho phép chia sẻ phiên liền mạch thông qua cookie ký tự đại diện và tính liên tục của khoá truy cập trên toàn bộ miền có thể đăng ký. Nhiều trình quản lý mật khẩu có thể nhận dạng miền gốc dùng chung và tự động đề xuất thông tin đăng nhập đã lưu trên các miền con có liên quan.
Sử dụng tệp cấu hình siêu dữ liệu
Thử thách chính của danh tính trên nhiều miền là sự phân mảnh của thông tin đăng nhập đã lưu. Trình quản lý mật khẩu coi các miền và ứng dụng khác nhau là những thực thể hoàn toàn tách biệt, điều này ngăn chúng tự động điền thông tin đăng nhập đã lưu trên một tài sản vào một tài sản khác.
Để giải quyết vấn đề phân mảnh, bạn có thể định cấu hình hành vi của trình quản lý mật khẩu thay vì thay đổi cấu trúc trang web. Bằng cách lưu trữ các tệp cấu hình siêu dữ liệu cụ thể, các tổ chức có thể xác nhận bằng mật mã rằng các miền và ứng dụng riêng biệt thuộc cùng một tổ chức. Điều này cho phép các hệ điều hành, trình duyệt và trình quản lý mật khẩu nhận ra mối quan hệ này và tự động kết nối bối cảnh danh tính, chia sẻ mật khẩu và khoá truy cập trên các tài sản của bạn. Bạn cũng phải sử dụng phương pháp này để chia sẻ mật khẩu và khoá truy cập dựa trên web với các ứng dụng di động, ngay cả khi bạn hợp nhất các miền web.
Sử dụng 2 tệp cấu hình riêng biệt để đảm bảo bạn hỗ trợ nhiều nền tảng và hệ sinh thái:
Trình quản lý mật khẩu của Google trên Android và Chrome: Lưu trữ tệp JSON chứa Đường liên kết đến tài sản kỹ thuật số (DAL) tại
/.well-known/assetlinks.jsonđể thiết lập mối quan hệ tin cậy có thể xác minh giữa các ứng dụng và trang web được liên kết của một tổ chức. Mối quan hệ tin cậy này cho phép các đường liên kết sâu trên ứng dụng và tính năng Chia sẻ thông tin đăng nhập liền mạch, trong đó mật khẩu đã lưu trên web sẽ tự động điền sẵn các trang web được liên kết (mặc dù việc chia sẻ khoá truy cập trên nhiều miền web vẫn cần đến Yêu cầu về nguồn gốc có liên quan). Tìm hiểu thêm trong hướng dẫn Chia sẻ thông tin đăng nhập một cách liền mạch.Mật khẩu của Apple trên iOS và Safari: Lưu trữ tệp Apple App Site Association (AASA) tại
/.well-known/apple-app-site-associationđể thiết lập chuỗi tin cậy mật mã cần thiết cho việc kết nối các trạng thái Mật khẩu của Apple trên các ứng dụng iOS và Safari. Để hỗ trợ hệ sinh thái của bên thứ ba, bạn có thể khai báo các miền được liên kết này một cách tập trung bằng cách sử dụng kho lưu trữ từ nguồn cộng đồng. Việc này giúp đảm bảo các công cụ độc lập (chẳng hạn như 1Password, công cụ này sẽ rõ ràng tiếp nhận kho lưu trữ này) cũng nhận ra bối cảnh danh tính được chia sẻ. Để tìm hiểu thêm về tính năng Liên kết trang web với ứng dụng của Apple, hãy đọc bài viết Hỗ trợ các miền được liên kết.
Để bật khoá truy cập trên nhiều miền web và giải quyết trở ngại về khoá truy cập, nhà phát triển có thể lưu trữ tệp Yêu cầu về nguồn gốc có liên quan (ROR) tại /.well-known/webauthn. ROR khai báo rõ ràng các miền được uỷ quyền được phép chia sẻ an toàn cùng một mã nhận dạng RP khoá truy cập. Để tìm hiểu thêm về Yêu cầu về nguồn liên quan, hãy đọc bài viết Cho phép sử dụng lại khoá truy cập trên các trang web của bạn bằng Yêu cầu về nguồn liên quan.
- Ưu điểm:
- Bản sửa lỗi trong nền cho người dùng cuối: Bản sửa lỗi này hoạt động hoàn toàn trong nền, tự động giải quyết tình trạng phân mảnh tính năng tự động điền và thiết lập tính liên tục của khoá truy cập ở cấp hệ điều hành hoặc trình duyệt mà không có bất kỳ thay đổi nào về trải nghiệm người dùng.
- Triển khai đơn giản: Đây là một giải pháp chi phí thấp, chỉ yêu cầu lưu trữ các tệp JSON tĩnh. Không yêu cầu tái cấu trúc phụ trợ hoặc logic trao đổi mã thông báo phức tạp.
- Duy trì cơ sở hạ tầng hiện có: Bạn có thể cải thiện đáng kể hành trình trên nhiều miền mà không cần thay đổi thương hiệu hoặc hợp nhất các miền.
- Nhược điểm:
- Các hạn chế về nền tảng: Các nền tảng thường áp dụng giới hạn nghiêm ngặt về lợi tức trên chi tiêu (ROR). Ví dụ: Chrome giới hạn một RP ID ở tối đa 5 nhãn eTLD+1 được liên kết. Để minh hoạ,
example.co.ukvàexample.dedùng chung nhãnexampleeTLD+1; tuy nhiên,example-rewards.comsử dụng nhãnexample-rewardsriêng biệt. Nếu bạn quản lý một danh mục miền rộng lớn hoặc đa dạng, thì những giới hạn này có thể không đủ. - Tăng độ trễ hoạt động: Việc phân giải các tệp siêu dữ liệu đòi hỏi phải có thêm một chuyến khứ hồi trên mạng, điều này làm tăng độ trễ khi trình duyệt xử lý hoạt động xác thực.
- Các hạn chế về nền tảng: Các nền tảng thường áp dụng giới hạn nghiêm ngặt về lợi tức trên chi tiêu (ROR). Ví dụ: Chrome giới hạn một RP ID ở tối đa 5 nhãn eTLD+1 được liên kết. Để minh hoạ,
Sử dụng iframe nhiều nguồn gốc
Nếu không thể sử dụng phương pháp tệp cấu hình siêu dữ liệu do giới hạn miền ROR, thì các phần tử iframe trên nhiều nguồn gốc sẽ cung cấp một đường dẫn mạnh mẽ, được hỗ trợ theo tiêu chuẩn để giải quyết các thách thức khi đăng nhập trên nhiều miền.
Bằng cách nhúng một nguồn xác thực tập trung (ví dụ: auth.brand.example) dưới dạng iframe trong một bên đáng tin cậy (ví dụ: brand.example), bạn có thể tương tác với cả các trường biểu mẫu thông thường và các API hiện đại. Đối với mật khẩu, trình quản lý thông tin đăng nhập của trình duyệt sẽ liên kết các thao tác tự động điền với nguồn gốc của iframe (auth.example). Điều này cho phép người dùng truy cập liền mạch vào thông tin đăng nhập tập trung của họ trên nhiều trang web.
Đối với khoá truy cập, cửa sổ mẹ phải cấp quyền truy cập cho iframe bằng cách sử dụng khung Chính sách về quyền, cho phép iframe gọi WebAuthn để xác thực dựa trên RP ID của nguồn gốc riêng. Trong cả hai quy trình, CSP (Chính sách bảo mật nội dung) đều hữu ích để bảo vệ người dùng khỏi các cuộc tấn công như tấn công bằng cách nhấp chuột và tập lệnh trên nhiều trang web. Sau khi xác thực thành công, phiên sẽ được thiết lập bằng một cookie được phân vùng và mã thông báo sẽ được truyền một cách an toàn trở lại cửa sổ mẹ bằng postMessage().
- Ưu điểm:
- Thông tin đăng nhập tập trung: Tránh tình trạng phân mảnh thông tin đăng nhập. Một nguồn gốc duy nhất, tập trung quản lý cả mật khẩu đã lưu và mã nhận dạng RP khoá truy cập hợp nhất, cho phép các miền riêng biệt chia sẻ thông tin xác thực này mà không cần hợp nhất các miền.
- Xác thực theo bối cảnh: Toàn bộ quy trình đăng nhập (cho dù tự động điền mật khẩu hay xác minh bằng khoá truy cập) đều diễn ra liền mạch trong bối cảnh của trang mẹ, tránh các lệnh chuyển hướng liên kết gây gián đoạn.
- Khả năng phục hồi trước các biện pháp chống theo dõi: Phương pháp này hoạt động chính xác ngay cả khi sử dụng các biện pháp chống theo dõi nghiêm ngặt trên nhiều trang web bằng cookie được phân vùng.
- Nhược điểm:
- Các hạn chế khi triển khai: Cấu trúc này đòi hỏi phải có kỹ thuật chuyên biệt. Yêu cầu CSP nghiêm ngặt (
frame-ancestors) để hạn chế việc nhúng vào các miền mẹ đáng tin cậy và ngăn chặn hành vi tấn công bằng cách nhấp chuột giả mạo, cấu hình Chính sách quyền HTTP để bật API WebAuthn và nhắn tin bảo mật, đã xác thực giữa các tài liệu (postMessage()) để giảm thiểu các cuộc tấn công giả mạo nguồn gốc và CSRF. Tìm hiểu các phương pháp hay nhất tại Khoá truy cập trong iframe.
- Các hạn chế khi triển khai: Cấu trúc này đòi hỏi phải có kỹ thuật chuyên biệt. Yêu cầu CSP nghiêm ngặt (
Tuân theo quy trình liên kết danh tính tiêu chuẩn
Việc áp dụng liên kết danh tính tiêu chuẩn (chẳng hạn như OpenID Connect) là một phương pháp mạnh mẽ và bền vững để duy trì hệ thống tài khoản của bạn.
Phương pháp này chính thức hoá quy trình xác thực bằng cách hợp nhất quy trình đó vào một miền Nhà cung cấp dịch vụ danh tính (IdP) chuyên dụng duy nhất, chẳng hạn như auth.brand.example.
Với một giao thức đã thiết lập, các ứng dụng sẽ chuyển hướng người dùng đến trung tâm này để xác thực trước khi nhận được một mã thông báo chuyển an toàn để hoàn tất quá trình đăng nhập trên miền mục tiêu. Mặc dù thường liên kết với các dịch vụ đăng nhập của bên thứ ba (chẳng hạn như Đăng nhập bằng Google), nhưng liên kết tiêu chuẩn hoàn toàn hợp lệ và được sử dụng rộng rãi như một giải pháp của bên thứ nhất để thay thế các giải pháp tạm thời không ổn định.
- Ưu điểm:
- Ngôn ngữ kỹ thuật chung: Nhà phát triển không cần tìm hiểu hoặc duy trì một giao thức cụ thể, được xây dựng tuỳ chỉnh; họ có thể dựa vào kiến thức đã được thiết lập trong ngành và các thư viện toàn diện. Ngoài ra, còn có các giải pháp đóng gói.
- Độ tin cậy đã được kiểm chứng: Các giao thức tiêu chuẩn đã được chứng minh, an toàn và ít bị lỗi hơn nhiều so với các cách triển khai đặc biệt.
- Dễ dàng mở rộng: Nếu tổ chức cần liên kết với một dịch vụ bên thứ ba mới hoặc tích hợp một dịch vụ mua lại sau này, thì cơ sở hạ tầng danh tính đã được trang bị để cung cấp thông tin đăng nhập.
- Trải nghiệm người dùng nhất quán: Người dùng nhận ra trang IdP tập trung là nguồn đáng tin cậy cho thương hiệu, làm rõ chính xác thời điểm và vị trí cần có thông tin đăng nhập.
- Nhược điểm:
- Chi phí tích hợp cao: Việc phát triển hoặc di chuyển sang một IdP tập trung sẽ làm tăng chi phí tích hợp và đòi hỏi chuyên môn bảo mật chuyên biệt. Các tổ chức phải đầu tư vào việc tái cấu trúc an toàn tất cả các ứng dụng được kết nối để hỗ trợ các mẫu dựa trên chuyển hướng an toàn.
- Lệnh chuyển hướng gây gián đoạn: Quy trình xác thực yêu cầu chuyển hướng người dùng khỏi trang web gốc đến một trang Nhà cung cấp danh tính tập trung, ngăn chặn trải nghiệm đăng nhập liền mạch trong bối cảnh.
Hợp nhất miền con
Một phương pháp cấu trúc khác là hợp nhất tất cả các miền bằng cách di chuyển các tài sản kỹ thuật số riêng biệt bên dưới một miền gốc có thể đăng ký chung (eTLD+1).
Việc này đòi hỏi bạn phải chuyển đổi các miền riêng biệt như brand.example và service-app.example thành các miền con như www.brand.example và service.brand.example.
- Ưu điểm:
- Quản lý thông tin xác thực hợp nhất: Trình quản lý mật khẩu có thể nhận dạng miền gốc và coi tất cả các miền con là một mục duy nhất, loại bỏ các lời nhắc trùng lặp và việc nhập mật khẩu theo cách thủ công.
- Tính liên tục của khoá truy cập: Theo mặc định, nhà phát triển có thể giới hạn phạm vi RP ID của khoá truy cập cho miền có thể đăng ký, ngay lập tức mở rộng khả năng hỗ trợ khoá truy cập trên tất cả các miền con được liên kết. Trong trường hợp này, mã nhận dạng RP
brand.examplesẽ hoạt động ở cảwww.brand.examplevàservice.brand.example. - Dễ dàng chia sẻ phiên: Việc hợp nhất cấu trúc miền cho phép chia sẻ một phiên duy nhất bằng cách sử dụng cookie ký tự đại diện (ví dụ: phạm vi cookie đến
Domain=brand.example).
- Nhược điểm:
- Các hạn chế về việc xây dựng thương hiệu và di chuyển: Phương pháp này có thể áp đặt các giới hạn tiềm ẩn về việc xây dựng thương hiệu nếu tổ chức của bạn bắt buộc phải có các miền cấp cao nhất riêng biệt. Quá trình di chuyển này rất phức tạp và đòi hỏi bạn phải quản lý cẩn thận các lệnh chuyển hướng HTTP cũng như khắc phục triệt để các cấu hình cũ trên nhiều nguồn.
Kết luận
Để đạt được tính liên tục về danh tính, bạn phải chuyển từ các quy trình tích hợp đăng nhập đặc biệt sang các tiêu chuẩn xác thực đã được thiết lập. Bằng cách đánh giá các ràng buộc về kinh doanh dựa trên những phương pháp đã thiết lập này (chẳng hạn như liên kết, hợp nhất miền, iframe hoặc siêu dữ liệu), bạn có thể loại bỏ các trở ngại về trải nghiệm người dùng và cải thiện quy trình xác thực trên toàn bộ hệ sinh thái của mình.
Để tìm hiểu thêm về các chủ đề liên quan, hãy nhớ theo dõi blog của chúng tôi và khám phá thêm các tài nguyên tại cổng thông tin danh tính của Chrome.