Lý tưởng nhất là hai trang web của bạn là tên miền phụ của một miền chung (ví dụ forum.example.com
và rails.example.com
), hoặc chia sẻ cùng một tên miền (www.example.com
.) một trong những trang web sẽ là trình xác thực chính và đặt cookie (cho .example.com
trong trường hợp của miền mẹ chung [thông báo .
trước example.com
] hoặc www.example.com
trong trường hợp của miền dùng chung, để cả hai ứng dụng có thể truy cập miền đó), nơi cookie chứa:
- các
user ID
- một
salt
(giá trị ngẫu nhiên tính theo thời gian đăng nhập), và
- một
SHA-2 signature
tính qua bộ ba (user ID
+ salt
+ a shared secret key
), nơi mà các khóa bí mật được chia sẻ là một chuỗi bí mật được biết đến bởi bo trang web thứ.
Mỗi trang web sẽ có thể lấy lại user ID
và salt
từ cookie, sau đó sử dụng shared secret key
(chỉ được biết đến bởi hai ứng dụng) để tính toán một SHA-2 signature
đó phải phù hợp với SHA-2 signature
lưu trữ trong cookie.
Nếu phù hợp với SHA-2 signatures
thì bạn có thể giả định rằng người dùng được xác thực, nếu không buộc người dùng phải đăng nhập lại.
Cookie phải bị hủy khi đăng xuất.
Bản in nhỏ
Để bảo vệ chống lại phiên tặc, tất cả các yêu cầu được thực hiện qua hai trang web nên được mã hóa trên SSL (sử dụng https.) Nếu đây là không thể, một băm dựa trên địa chỉ IP của khách hàng cũng như loại và phiên bản trình duyệt (Tác nhân người dùng) có thể được tính toán tại thời điểm đăng nhập và cũng được lưu trữ trong cookie. Nó phải được kiểm tra lại đối với địa chỉ IP của người dùng và tác nhân người dùng trước khi phục vụ từng yêu cầu. Phương pháp dựa trên băm là bảo mật thông qua sự tối tăm, và có thể bị lừa; hơn nữa, người dùng truy cập internet từ phía sau một nhóm proxy hoặc sử dụng TOR có thể bị hệ thống của bạn khởi động mỗi khi một proxy hoặc nút thoát khác (có địa chỉ IP khác) chuyển tiếp yêu cầu.