Tôi có một yêu cầu trong đó, tôi phải thay thế xác thực người dùng mặc định bằng xác thực của máy chủ trung tâm tức là máy chủ SSO.
Bằng cách gỡ lỗi Drupal tôi đã biết rằng tất cả quản lý phiên xảy ra trong includes/session.inc
tệp. Tôi muốn thực hiện xác thực như trong hình:
SCENARIO: Đăng nhập
Chi tiết các bước sẽ là:
- Thay thế biểu mẫu đăng nhập để gửi tên người dùng và mật khẩu đến máy chủ SSO ( không phải trên Drupal , mà trên .NET).
- Xác thực người dùng trên máy chủ SSO bằng cơ sở dữ liệu của trang web đó; và gửi phản hồi trở lại một số trang PHP tùy chỉnh trên trang web của tôi (hoặc một mẫu bằng mô-đun?).
- Sử dụng phản hồi, xác định người dùng trong bảng người dùng và tạo phiên cho người dùng đó mà không cần kiểm tra mật khẩu (vì điều đó có nghĩa là xác thực kép). Theo mặc định, Drupal đặt cookie với tên của
$insecure_session_name
biến và có giá trị$sid
. Tôi muốn Drupal không đặt cookie ở đây, thay vào đó hãy gửi các giá trị của biến đến máy chủ SSO. - Máy chủ SSO sẽ lấy các giá trị, tạo cookie và thả nó vào miền chính
domain.com
(để nhắc cả haimy website
vàsso server
nằm trên tên miền phụ của tên miền chính, cũng không thuộc Drupal). Sau đó, trang web drupal có thể đăng nhập bằng cách sử dụng cookie đó.
Tôi biết đó là một câu hỏi khó, tôi chỉ tìm kiếm con trỏ là tôi nên bắt đầu như thế nào? như họ nói "bạn không nên hack lõi". Vì vậy, câu hỏi của tôi là:
- Tôi nên tìm ở đâu để hiểu cách thức xác thực Drupal và quản lý phiên hoạt động theo chiều sâu?
- Có cách nào để tôi có thể gọi các hàm trong
includes/session.inc
việc sử dụng hook (như các bình luận với các hàm nói "chỉ sử dụng nội bộ / không được sửa đổi") không?
LƯU Ý: Tôi sẽ sử dụng cùng một phương pháp để đăng ký người dùng, để bản ghi vẫn nằm trong cơ sở dữ liệu trung tâm của máy chủ SSO. Và trong thời gian đó sẽ đưa vào một số mật khẩu rác cho cùng một người dùng trong cơ sở dữ liệu của trang web Drupal (vì mật khẩu sẽ không được kiểm tra trong khi đăng nhập).