2014-09-24 12 views
6

Tôi muốn nhớ tham số yêu cầu url từ yêu cầu đầu tiên của trang web của tôi (SP) và sử dụng chúng sau phản hồi từ IdP.Spring saml - cách nhớ tham số yêu cầu khi bắt đầu đăng nhập vào SP và xử lý chúng sau khi phản hồi IdP

Tôi đang sử dụng tiện ích mở rộng spring-saml và suy nghĩ về thuộc tính relayState nhưng không thể tìm thấy ví dụ cách xây dựng nó với các tham số từ yêu cầu.

Tôi cần điều đó cho người dùng chuyển hướng sau quá trình xác thực sso đến trang đích (mô-đun ứng dụng) tùy thuộc vào yêu cầu đầu tiên.

Trả lời

14

Ứ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 ExceptionTranslationFilterHttpSessionRequestCache) 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.

+0

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. –

+0

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ợ! –

Các vấn đề liên quan