Bạn bấm Kết nối, và thay vì ô mật khẩu, ứng dụng VPN mở trình duyệt của bạn. Việc chuyển giao đó khiến những người mong đợi đường hầm tự xác thực bị bối rối. Trình duyệt không phải đường vòng: đó là nơi nhà cung cấp danh tính thực sự xác thực con người, còn ứng dụng chỉ chờ kết quả.

Đi qua một lần đăng nhập từ đầu đến cuối cho thấy mỗi lỗi thuộc về đâu, và đó chính là phần mà hầu hết runbook bỏ qua.

Hãy bắt đầu từ ứng dụng, không phải từ cấu hình cổng

Ứng dụng dựng một yêu cầu và gửi trình duyệt đến nhà cung cấp danh tính kèm một mã định danh nhà cung cấp dịch vụ và một vị trí quay lại. Sau đó IdP của tổ chức bạn chạy những gì đã được cấu hình: mật khẩu, MFA, kiểm tra thiết bị, truy cập có điều kiện. Nếu trình duyệt đã có phiên hợp lệ, phần nhìn thấy được có thể mất một hoặc hai giây. Sự ngắn gọn đó là tái sử dụng phiên, không phải bước kiểm tra bị bỏ qua.

Trước mọi thứ khác, hãy đọc trong cấu hình liên kết của ứng dụng hai giá trị: siêu dữ liệu hoặc URL của IdP mà nó tin cậy, và địa chỉ callback mà nó mong đợi. Sự không khớp ở đó sẽ thất bại trước khi bất kỳ mật khẩu nào được nhập.

Nhà cung cấp danh tính phải trả về gì

IdP trả lời bằng một phản hồi SAML đã ký chứa assertion: chủ thể là ai, ai phát hành, dành cho ai và còn hiệu lực bao lâu. Những trường đó chính là hợp đồng. Nhà phát hành, audience, người nhận và cửa sổ hiệu lực đều phải khớp với điều dịch vụ mong đợi.

Một phản hồi được IdP đúng ký nhưng gửi đến audience khác vẫn không hợp lệ. Đó là bước kiểm tra mà người ta bỏ qua khi sao chép siêu dữ liệu giữa phòng thí nghiệm và môi trường thật.

Dịch vụ VPN xác thực gì trước khi tin bạn

Dịch vụ xác minh chữ ký với chứng chỉ tin cậy, kiểm tra nhà phát hành, audience và người nhận, rồi đánh giá các điều kiện thời gian. Chỉ sau đó nó mới ánh xạ assertion sang người dùng hoặc nhóm và áp dụng chính sách ủy quyền VPN. Ở đây xác thực và ủy quyền là hai bước riêng, và một assertion hợp lệ không có nhóm khớp sẽ tạo ra phiên kết nối được mà không tới được đâu.

Assertion là vật liệu xác thực, không phải mật khẩu. Dán nó vào ứng dụng khác, hay giữ lại cho lần kết nối lại sau, không phải một cách đăng nhập được hỗ trợ.

Hai vòng đời kết thúc riêng rẽ

Phiên trình duyệt tại IdP và phiên VPN tại cổng hết hạn theo hai đồng hồ khác nhau. Đăng xuất khỏi IdP không nhất thiết phá bỏ một đường hầm đã thiết lập, và ngắt đường hầm không đăng xuất bạn khỏi trình duyệt.

AWS Client VPN ghi rõ rằng luồng liên kết của nó không hỗ trợ SAML single logout, đó là một ví dụ cụ thể của khoảng trống này. Hãy kiểm tra dịch vụ của chính bạn thay vì cho rằng có tính đối xứng.

Đó là lý do một lần kết nối lại hành xử khác nhau lúc 09:00 và lúc 15:00. Nó có thể tái sử dụng phiên IdP một cách lặng lẽ, hỏi lại MFA, hoặc thất bại vì thời lượng phiên của endpoint đã hết trong khi phiên trình duyệt thì chưa. Quy trình liên kết của AWS mô tả các yêu cầu riêng về ứng dụng và phản hồi, còn các dịch vụ khác dùng cách chuyển giao khác.

Khi bước trình duyệt thất bại, hãy kiểm tra theo thứ tự này

Làm việc từ trình duyệt ra ngoài, vì thông báo lỗi thường nêu chặng cuối chứ không phải chặng đầu.

Nếu trang không bao giờ tải, URL IdP của ứng dụng hoặc đường dẫn tới nó bị sai. Nếu IdP từ chối yêu cầu, mã định danh nhà cung cấp dịch vụ hoặc callback không khớp với cấu hình của nó. Nếu trình duyệt báo thành công mà ứng dụng vẫn thất bại, phản hồi đã đến sai chỗ hoặc không qua được kiểm tra audience và thời gian. Và nếu đường hầm dựng lên mà không có quyền truy cập, assertion đã được chấp nhận nhưng ánh xạ nhóm thì chưa.

Giữ trang mong đợi, callback và ánh xạ nhóm trong một tài liệu duy nhất. Khi đó người dùng báo lỗi đăng nhập VPN có thể nói họ đã thấy điều nào trong bốn điều đó, và câu trả lời đã được viết sẵn một nửa.

Bài viết liên quan