2008-12-09 15 views
5

Tôi đang chạy hai trang web khác nhau trên hai máy chủ khác nhau có hai miền khác nhau. Một trang web đang chạy Joomla, một Moodle khác. Tôi đã cấu hình máy chủ Moodle để căn cứ xác thực của nó trên bảng người dùng trên trang Joomla, vì vậy chúng tôi có một nguồn thông tin người dùng có thẩm quyền. Những gì tôi muốn làm là: sau khi ai đó đăng nhập vào trang Joomla, hãy cung cấp liên kết đến trang Moodle sẽ tự động đăng nhập vào, loại giả mạo giải pháp đăng nhập một lần. Các mật khẩu trong Joomla là MD5'd và mỗi mật khẩu có muối riêng của nó. Ý tưởng đầu tiên về cách giải quyết vấn đề này là nói với Moodle rằng mật khẩu đã được lưu trữ ở dạng văn bản thuần túy, sau đó thông qua đầu vào dạng ẩn, gửi mật khẩu được mã hóa khi họ nhấp vào liên kết. Ngoài các vấn đề bảo mật rõ ràng với điều đó, nó cũng có nghĩa là họ nên cố gắng đăng nhập thông qua giao diện Moodle, họ cần phải nhập một chuỗi MD5 khổng lồ, vì đó là những gì Moodle nghĩ mật khẩu của họ.Gửi thông tin xác thực giữa các trang web

Tôi đã cân nhắc việc thay đổi mô-đun xác thực trong Moodle sao cho mật khẩu đã gửi khớp với các tiêu chí nhất định (ví dụ: 32 ký tự hex), sau đó không MD5 trước khi so sánh với phiên bản Joomla - Điều mà tôi cần là một số cách đặc biệt để gửi mật khẩu được mã hóa từ Joomla đến Moodle và báo hiệu cho Moodle để xử lý yêu cầu đăng nhập đó một cách khác nhau.

Mọi suy nghĩ?

Trả lời

4

Bạn có thể làm như sau cho một an toàn giải pháp duy nhất đăng nhập một:

  • Tạo ngẫu nhiên (với PRNG) token dựa cho Joomla sử dụng (lưu trữ này)
  • Gửi thẻ này trong nội bộ (thông qua dịch vụ web, v.v., giữ nó trên HTTPS- hoặc nguồn dữ liệu cục bộ) cho Moodle
  • Trong khi gửi mã thông báo này, bạn cũng nên thông báo cho Moodle về mã thông báo của userid (do đó gửi token + userid)
  • Lưu trữ mã thông báo + userid này trong Moodle
  • Tạo liên kết với mã thông báo này trong Joomla với mã thông báo này (bạn có thể sử dụng chuỗi truy vấn ngay khi bạn hết hạn mã thông báo sau lần sử dụng đầu tiên nhưng POST là ý tưởng tốt hơn)
  • Khi bạn thấy mã thông báo này trong Moodle, hãy đăng nhập người dùng được liên kết vào và hết hạn mã thông báo (vì vậy nó sẽ an toàn để chống lại các cuộc tấn công trả lời, v.v.)
0

Nếu bạn đang sử dụng Joomla! 1.5, đừng quên plugin của người dùng. Hãy xem plugin/user/example.php. Bạn có thể nắm bắt mật khẩu trong sự kiện onLoginUser có thể giúp bạn kết nối các hệ thống.

1

Bạn có thể sử dụng Pro Moodle (http://www.promoodle.com/) hoặc JFusion (http://www.jfusion.org/) cả hai tỷ lệ này để tạo một dấu hiệu đơn trên hệ thống cho hệ thống Joomla/Moodle.

Ngoài ra còn có một hướng dẫn nằm ở đây: http://myjoomlaextensions.com/images/fbfiles/files/MoodleBridge.pdf để "cầu nối giữa Moodle và Joomla

Có một hướng dẫn để sửa đổi mã Moodle để tạo ra một dấu hiệu duy nhất trên hệ thống ở đây:. (! Sử dụng một cách thận trọng) http://moodle.org/mod/forum/discuss.php?d=45126#211486 .

Tỷ lệ milage của bạn có thể khác nhau khi cố gắng sử dụng các giải pháp này trên các miền khác nhau.