Xác thực SAML trong ChromeOS

Theo mặc định, dịch vụ tài khoản có thể truy cập từ bên ngoài của Google sẽ xử lý việc xác thực cho Tài khoản Google. Khi một người dùng chưa được xác thực truy cập vào một trang của Google yêu cầu xác thực, biểu mẫu đăng nhập của Google sẽ yêu cầu người dùng cung cấp địa chỉ email và mật khẩu. Sau khi người dùng gửi email và mật khẩu, quy trình xác thực của Google sẽ xác minh rằng thông tin đăng nhập đã nhập là chính xác. Nếu thông tin đăng nhập chính xác, quy trình xác thực của Google sẽ đặt cookie đăng nhập của người dùng.

Một số doanh nghiệp sử dụng mô hình phức tạp hơn, trong đó nhà cung cấp danh tính (IdP) bên thứ ba xử lý quy trình xác thực. Tính năng xác thực của Google hỗ trợ mô hình này thông qua giao thức Ngôn ngữ đánh dấu xác nhận bảo mật (SAML) theo tiêu chuẩn ngành. Quản trị viên có thể định cấu hình một miền để sử dụng phương thức xác thực SAML.

Lấy mật khẩu của người dùng

ChromeOS cần xác định mật khẩu mà người dùng đã nhập trong quá trình đăng nhập để:

  • Mã hoá dữ liệu của người dùng được lưu trữ trên ổ đĩa.
  • Bảo vệ màn hình khoá.
  • Bật tính năng đăng nhập ngoại tuyến khi không có kết nối mạng.

Khi sử dụng SAML, mật khẩu không được nhập trực tiếp trên hộp thoại hệ thống ChromeOS mà nằm trong một webview do nhà cung cấp danh tính lưu trữ. Mặc dù ChromeOS có quyền truy cập vào HTML, nhưng không có cách đơn giản và chính tắc nào để lấy mật khẩu vì không rõ trường biểu mẫu nào chứa dữ liệu.

Có hai cách để lấy mật khẩu của người dùng khi sử dụng SAML: API Truyền thông tin đăng nhập và trích xuất mật khẩu.

Chrome Credentials Passing API

Google cung cấp một Credentials Passing API (API truyền thông tin đăng nhập) mà các nhà cung cấp danh tính có thể triển khai trên các trang SAML, bằng JavaScript, để truyền dữ liệu cần thiết đến ChromeOS. Quy trình xác thực của Google sử dụng API này, nhưng bất kỳ nhà cung cấp danh tính SAML nào cũng có thể sử dụng.

Thu thập mật khẩu

Nhà cung cấp danh tính dựa trên SAML có thể sử dụng tính năng trích xuất mật khẩu khi không hỗ trợ API Truyền thông tin đăng nhập.

Trong phương thức này:

  1. Màn hình xác thực sẽ chèn một tập lệnh nội dung vào webview lưu trữ quy trình đăng nhập.
  2. Tập lệnh nội dung xác định các trường nhập HTML thuộc loại mật khẩu và sao chép nội dung của các trường đó vào một mảng. Mảng này được cập nhật bất cứ khi nào nội dung của một trường mật khẩu thay đổi.
  3. Mật khẩu bị đánh cắp sẽ được gửi đến một trang nền để tích luỹ. Bằng cách này, mật khẩu có thể bị chặn ngay cả khi quy trình đăng nhập trải qua nhiều lượt chuyển hướng đến các trang HTML khác nhau.

Khi kết thúc quy trình đăng nhập, mảng mật khẩu bị rò rỉ sẽ được truy xuất từ trang nền. Có thể xảy ra 3 trường hợp: không có mật khẩu nào bị rò rỉ, chỉ có một mật khẩu bị rò rỉ hoặc có nhiều mật khẩu bị rò rỉ.

Không có mật khẩu nào bị đánh cắp

Tập lệnh nội dung không tìm thấy mật khẩu trong các trang HTML do nhà cung cấp danh tính phân phát. Nhà cung cấp danh tính có thể không sử dụng mật khẩu truyền thống.

Trong trường hợp này, ChromeOS sẽ nhắc người dùng chọn mật khẩu thủ công cho thiết bị. Nếu không có mật khẩu (ví dụ: xác thực bằng thẻ thông minh, NFC, sinh trắc học), thì quy trình xác thực của ChromeOS có thể tiếp tục mà không cần mật khẩu.

Đã có đúng một mật khẩu bị lộ

Tập lệnh nội dung xác định chính xác một mật khẩu. Rất có thể đây là mật khẩu mà người dùng dùng để xác thực.

Trong trường hợp này, rất có thể chúng tôi đã trích xuất mật khẩu của người dùng một cách chính xác. ChromeOS sẽ sử dụng mật khẩu bị lộ làm mật khẩu của người dùng để tiếp tục quy trình xác thực.

Có nhiều mật khẩu bị xâm nhập

Tập lệnh nội dung xác định nhiều mật khẩu. Điều này có thể xảy ra trong những trường hợp như nhà cung cấp danh tính yêu cầu người dùng nhập mật khẩu cố định và mật khẩu dùng một lần vào biểu mẫu đăng nhập.

Trong trường hợp này, có thể chúng tôi đã trích xuất mật khẩu thực tế của người dùng và một số trường mật khẩu bổ sung mà ChromeOS không quan tâm. Để xác định mật khẩu nào là mật khẩu chính xác, ChromeOS sẽ nhắc người dùng nhập mật khẩu một lần nữa vào một lời nhắc mật khẩu bổ sung.

Nếu mật khẩu đã nhập khớp với một trong các mật khẩu bị xâm nhập, thì mật khẩu thực tế của người dùng đã được xác định và quy trình xác thực sẽ tiếp tục. Nếu không có kết quả trùng khớp, người dùng sẽ được nhắc nhập lại mật khẩu. Sau 2 lần nhập sai, quá trình đăng nhập sẽ không thành công và xuất hiện thông báo lỗi.

Đăng ký doanh nghiệp

Đối với quy trình đăng ký thiết bị cho doanh nghiệp, bạn cần có địa chỉ email của người dùng đăng ký để liên kết thiết bị với miền phù hợp. Email này được gửi từ Máy chủ quản lý thiết bị (DM) đến Chrome trong trường tên người dùng của thông báo PolicyData trong quá trình tìm nạp chính sách thiết bị. Bạn không cần xác định mật khẩu của người dùng.