Ứng dụng mẫu SAML trong mùa xuân hoạt động như thế này ra khỏi hộp. Khi người dùng truy cập một trang được bảo vệ bởi Xuân An và đòi hỏi hệ thống xác thực:
- nhớ các thông số đã được sử dụng để gọi trang (thực hiện tự động bên trong Xuân An sử dụng
ExceptionTranslationFilter
và HttpSessionRequestCache
) bằng cách lưu trữ các thông tin vào các phiên HTTP
- gọi điểm mùa xuân SAML của entry (
SAMLEntryPoint
lớp) mà chuyển hướng người dùng đến IDP, càng tốt sau khi lựa chọn IDP
- người dùng xác thực tại IDP và được chuyển hướng trở lại ứng dụng của bạn
- xuân SAML thẩm tra các phản ứng và i nvokes AuthenticationSuccessHandler, trong đó (trong ứng dụng mẫu) có kiểu
org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler
- trình xử lý thành công sẽ kiểm tra xem có yêu cầu được lưu trữ hay không (đặt ở bước đầu tiên) và nếu nó làm cho trình duyệt của người dùng mở trang được nhớ bằng cùng một bộ các thông số như ban đầu
- việc kiểm tra an ninh bây giờ sẽ vượt qua, miễn là người dùng xác thực được phép truy cập trang
bạn dĩ nhiên có thể thực hiện bằng nhà nước tiếp sức này như bạn mong muốn. Cách chính xác để đặt trạng thái chuyển tiếp là bằng cách mở rộng SAMLEntryPoint
, phương pháp ghi đè getProfileOptions
và trả lại trạng thái chuyển tiếp mong muốn của bạn trong đối tượng WebSSOProfileOptions
trả về.
Sau đó, bạn có thể thay đổi AuthenticationSuccessHandler
thành org.springframework.security.saml.SAMLRelayStateSuccessHandler
để chuyển hướng đến URL được trả lại từ trạng thái chuyển tiếp sau khi xác thực thành công.
Nguồn
2014-09-24 09:22:08
Tuyệt vời! Tôi cần exacly câu này: "Cách chính xác để thiết lập trạng thái chuyển tiếp là bằng cách mở rộng SAMLEntryPoint, phương pháp ghi đè getProfileOptions và trở về trạng thái chuyển tiếp mong muốn của bạn trong đối tượng WebSSOProfileOptions trả về." Cảm ơn rất nhiều. –
relayState là một cách hay để chuyển ngữ cảnh giữa máy chủ xác thực và máy khách. Cảm ơn vì tiền hỗ trợ! –