Chúng tôi đang sử dụng AWS SSO với TOTP qua RADIUS. Máy chủ RADIUS của chúng tôi là một RADIUS FreeRADIUS với linotp-auth-freeradius-perl.
Vấn đề là kết nối giữa AWS SSO và FreeRADIUS không hoàn toàn đáng tin cậy - có một số khoảng thời gian dường như có sự mất gói đáng kể giữa chúng.
RADIUS sử dụng UDP, điều đó có nghĩa là ngay cả một gói trả về bị mất cũng có thể gây ra lỗi xác thực. AWS SSO sau đó sẽ thử lại sau một thời gian, nhưng TOTP RFC cấm sử dụng cùng một giá trị mã thông báo hai lần và lần thử đầu tiên đã sử dụng hết TOTP.
Vì vậy, có nhiều nhật ký như:
24/05/2022 - 05:59:49 CẢNH BÁO {140508089116416} [linotp.tokens.totptoken][checkOtp #429] [checkOTP] giá trị OTP trước đó đã được sử dụng lại!
bộ đếm mã thông báo cũ: 55112395, bộ đếm được trình bày 55112395
Và nhiều người dùng không thể đăng nhập AWS SSO dù đã thử vài lần.
Tôi đang tìm ý tưởng về cách cải thiện độ tin cậy của điều này.Tôi không thể tìm ra cách để FreeRADIUS gửi nhiều gói trả lời với độ trễ nhất định (ví dụ: 10 gói cứ sau 1 giây), điều này sẽ làm cho mỗi gói trả lời ít có khả năng bị thất lạc hơn nhiều.
Nhưng có lẽ có một cách để nhân Linux sao chép các gói trả lời như vậy nhiều lần với độ trễ ngày càng tăng. Nếu có thì làm thế nào? Trong khi tránh sao chép lại những bản sao đó, điều này, mặc dù hơi buồn cười khi nghĩ về, nhưng khá là không mong muốn…¦
Tôi không nghĩ AWS SSO hỗ trợ bất kỳ giao thức nào khác để sử dụng TOTP ngoài RADIUS (với UDP), nhưng có thể tôi đã nhầm. Xin vui lòng sửa cho tôi nếu đây là trường hợp.