Mô-đun django-shibboleth có sẵn có thể được sử dụng để lấy các thuộc tính từ IdP và ánh xạ chúng tới người dùng trong hệ thống xác thực Django. Hầu hết công việc được thực hiện bởi chính Shibboleth, chỉ với một lượng nhỏ mã cần thiết cho việc lập bản đồ.
Bao bì có sẵn tại đây.
linuxsoft.cern.ch/internal/repos/ai6-stable/x86_64/os/Packages/django-shibsso-0.1-1.noarch.rpm
hoặc nguồn từ đây.
linuxsoft.cern.ch/internal/repos/ai6-stable/source/SRPMS/django-shibsso-0.1-1.src.rpm
Làm theo hướng dẫn Shibboleth lập Provider Shibboleth Dịch vụ địa phương của bạn (SP) để sử dụng với IdP.
Trong tệp http.conf hoặc cấu hình ứng dụng của riêng bạn trong conf.d, tạo mục nhập sau.
<Location /shibboleth>
AuthType shibboleth
ShibRequireSession On
ShibUseHeaders On
require valid-user
</Location>
Điều này sẽ dẫn đến URL đến/shibboleth được chuyển đến trang đăng nhập IdP. Sau khi đăng nhập thành công, một trang 404 sẽ được trả lại.
Thêm cấu hình, thay thế ứng dụng bằng tên ứng dụng của bạn.
<Location "/">
SetHandler mod_python
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE app.settings
PythonDebug Off
</Location>
Điều này sẽ dẫn đến lỗi sau khi đăng nhập thông qua URL/shibboleth. URL hiện tại, Shibboleth.sso/ADFS, không khớp với bất kỳ thông tin nào trong số này.
Để giải quyết vấn đề này, bạn cần phải thêm phần sau vào cấu hình.
<Location /Shibboleth.sso>
SetHandler None
</Location>
/var/log/shibboleth/transaction.log sẽ cho bạn biết những thuộc tính nào được phát hành.
Bạn cần những tính năng nào? Bạn sẽ chỉ bao giờ xác thực đối với một IdP đơn lẻ hay bạn cần DS, WAYF, liên kết, giải pháp tạo tác, đăng xuất, v.v.? – JimB
Câu hỏi tuyệt vời! Dự án đặc biệt này sẽ cần DS, WAYF, vv – user1007116
Đặc biệt nếu bạn định sử dụng nhiều hơn các tính năng cơ bản của SAML, tôi sẽ gắn bó với phần đầu tiên của câu trả lời của tôi và đồng ý với @hrnt. Kết hợp SP shibboleth bản địa sẽ là con đường đáng tin cậy nhất. – JimB