OpenID được thiết kế theo cách chuyển hướng minh bạch. Miễn là các cặp khóa/giá trị cần thiết được duy trì ở mỗi chuyển hướng, bằng GET hoặc POST, mọi thứ sẽ hoạt động chính xác.
Giải pháp dễ nhất để đạt được khả năng tương thích với người tiêu dùng không làm việc với chứng chỉ tự ký là sử dụng điểm cuối không được mã hóa chuyển hướng các thông báo checkid_immediate
và checkid_setup
tới một thư được mã hóa.
Làm điều này trong mã máy chủ của bạn dễ dàng hơn so với chuyển hướng máy chủ web vì trước đây có thể dễ dàng xử lý các yêu cầu POST hơn, đồng thời cũng giữ mã với nhau. Hơn nữa, bạn có thể sử dụng cùng một điểm kết thúc để xử lý tất cả các hoạt động OpenID, bất kể nó có nên được phân phối qua SSL hay không, miễn là kiểm tra thích hợp được thực hiện.
Ví dụ, trong PHP, chuyển hướng có thể đơn giản như:
// Redirect OpenID authentication requests to https:// of same URL
// Assuming valid OpenID operation over GET
if (!isset($_SERVER['HTTPS']) &&
($_GET['openid_mode'] == 'checkid_immediate' ||
$_GET['openid_mode'] == 'checkid_setup'))
http_redirect("https://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}");
Là giá trị openid.return_to
được tạo ra với một đồng bằng HTTP điểm cuối, như xa như người tiêu dùng được quan tâm, nó chỉ là xử lý một máy chủ không được mã hóa. Giả sử OpenID 2.0 hoạt động đúng với phiên và nonces, bất kỳ thông tin nào được truyền giữa người tiêu dùng và máy chủ của bạn không được tiết lộ thông tin có thể khai thác được. Các hoạt động giữa trình duyệt của bạn và máy chủ OpenID, có thể khai thác được (lấy cắp mật khẩu hoặc cướp cookie phiên) được thực hiện qua kênh được mã hóa.
Ngoài việc lưu giữ những người nghe lén, việc thực hiện các hoạt động xác thực qua SSL cho phép bạn sử dụng cờ cookie secure
HTTP. Điều này cho biết thêm một lớp bảo vệ cho hoạt động checkid_immediate
, nếu bạn muốn cho phép nó.
Nguồn
2008-10-27 05:20:10
Nếu tôi không thể sử dụng chứng chỉ tự ký thì tôi buộc phải sử dụng kết nối http trong trường hợp này tôi mất quyền lợi chính và phụ. Tôi không muốn URL được xác minh và gửi mật khẩu được mã hóa để không xác minh URL và gửi mật khẩu thuần văn bản. –
Bạn có thể sử dụng https cho giao diện người dùng mà không thay đổi OpenID hoặc điểm cuối. Ví dụ, theo dõi lưu lượng myOpenID sử dụng khi xác thực số nhận dạng http. Nó chuyển tiếp trình duyệt từ điểm cuối http đến trang https. – keturn
Um, nó * là * những gì bạn cần? Này, RP * không nên * làm việc với https cho các chứng chỉ tự ký nói chung. Bất kể thủ thuật nào bạn chơi với các chuyển hướng, bạn không nhận được sự bảo mật của việc sử dụng SSL trừ khi bạn có một chứng chỉ được ký bởi một người nào đó mà ủy thác RP tin tưởng. –