19

Tôi muốn triển khai lớp xác thực đăng nhập một lần (SSO) trong ứng dụng dựa trên Spring của mình với mục đích hỗ trợ xác thực và ủy quyền từ các miền bảo mật khác nhau. Tôi đã chọn Shibboleth làm IdP, nhưng tôi vẫn chưa xác định được những gì tôi sẽ sử dụng cho SP.Đăng nhập một lần vào mùa xuân bằng cách sử dụng SAML Extension và Shibboleth

Các lựa chọn là:

  • Xuân An SAML Extension: thành phần cho phép cả hai ứng dụng mới và hiện có để hoạt động như một nhà cung cấp dịch vụ trong liên đoàn dựa trên SAML 2.0 giao thức và cho phép Web Single Sign-On. Spring Security Extension cho phép kết hợp liền mạch SAML 2.0 và các cơ chế xác thực và liên kết khác trong một ứng dụng duy nhất. Tất cả các sản phẩm hỗ trợ SAML 2.0 ở chế độ Nhà cung cấp danh tính (ví dụ: ADFS 2.0, Shibboleth, OpenAM/OpenSSO, IdM RM5 hoặc Ping Federate) có thể được sử dụng để kết nối với Spring Security SAML Extension.

  • Shibboleth (cũng như SP): Shibboleth là một công nghệ dựa trên web mà thực hiện các HTTP/POST, tạo tác, và thuộc tính đẩy hồ sơ của SAML, bao gồm cả nhà cung cấp danh tính (IdP) và cung cấp dịch vụ (SP) thành phần.

Vì vậy, tôi đã một số câu hỏi sau:

  1. có phải là một ý tưởng tốt để sử dụng trực tiếp mùa xuân SAML như SP về khả năng mở rộng và bảo trì?
  2. Có thể sử dụng SP bên ngoài cùng với Bảo mật mùa xuân? Làm thế nào để tôi cấu hình ứng dụng của tôi và/hoặc sever ứng dụng của tôi (JBoss 8.0 - WildFly)?
  3. Tôi xác định vai trò ở đâu (cho từng trường hợp)?
  4. Lựa chọn nào đáng giá?

Trân trọng, V.

Trả lời

41

Sự khác biệt chính giữa hai là kịch bản triển khai:

  • Shibboleth SP plugin được triển khai trực tiếp đến/IIS web server Apache.
  • Spring SAML được nhúng trong ứng dụng của bạn.

Cả hai đều có ưu và khuyết điểm.


  1. có phải là một ý tưởng tốt để sử dụng trực tiếp mùa xuân SAML như SP về khả năng mở rộng và bảo trì?

Xuân SAML

  • Cung cấp kiểm soát lớn hơn như thế nào xác thực được thực hiện và làm thế nào quá trình xác thực tương tác với ứng dụng của bạn. Bạn có thể ví dụ: tạo giao diện người dùng cấu hình của riêng bạn và tự động thêm IDP, tạo màn hình đăng nhập tùy chỉnh như một phần của ứng dụng, kiểm soát hoàn toàn và dễ dàng xử lý lỗi, dễ dàng hỗ trợ nhiều IDP, chi tiết cấu hình động của SSO (yêu cầu AuthnContexts, NameID, bindings, authentication authentication)).
  • Dễ dàng phân tích cú pháp các thuộc tính SAML đã nhận ở các định dạng khác nhau, hỗ trợ nhiều phương thức xác thực trong cùng một ứng dụng.
  • Tự động tạo siêu dữ liệu SP, nó cung cấp nhiều hạn chế và hỗ trợ hồ sơ không có sẵn trong tất cả các tùy chọn khác (ví dụ: Đăng xuất một lần, Người giữ khóa, Khám phá IDP).
  • Tương tác liền mạch với Spring Security, mang lại một bộ lợi ích riêng. Với Spring SAML, bạn cũng có thể định cấu hình chính sách xác thực và ủy quyền hoàn chỉnh trực tiếp trong ứng dụng của mình (ví dụ: trang yêu cầu xác thực hay không và khi nào, kiểm soát quyền truy cập dựa trên vai trò đối với nội dung, bước xác thực trên điều kiện động, ...).
  • Cho phép bạn triển khai ứng dụng trên bất kỳ máy chủ ứng dụng hoặc vùng chứa nào và đằng sau bất kỳ proxy ngược hoặc máy chủ web nào mà không ảnh hưởng đến chức năng.

plugins Shibboleth

  • Đây là những cấu hình tĩnh và thường tương tác với ứng dụng của bạn thông qua tiêu đề HTTP. Chúng tách riêng logic xác thực khỏi ứng dụng, vì vậy điều duy nhất bạn cần quan tâm là chấp nhận các tiêu đề và khởi tạo phiên ứng dụng của bạn với ngữ cảnh bảo mật chính xác. Định nghĩa của các trang được bảo mật hiện diện trên máy chủ IIS/Apache và dựa trên các mẫu URL có nghĩa là chính sách xác thực và ủy quyền được định nghĩa một phần bên ngoài ứng dụng của bạn.
  • Bạn cần đảm bảo rằng ứng dụng chỉ có thể được truy cập thông qua máy chủ web (= cấm tất cả truy cập trực tiếp) vì điều đó sẽ cho phép rèn tiêu đề.
  • Không yêu cầu nhiều thay đổi đối với bản thân ứng dụng và do đó thường có thể dễ dàng được sử dụng với các hệ thống cũ.

  1. Có thể sử dụng một SP bên ngoài cùng với Xuân An? Làm cách nào để tôi định cấu hình ứng dụng và/hoặc ứng dụng của tôi cắt đứt (JBoss 8.0 - WildFly)?

Có, có thể, nhưng sẽ cần nỗ lực. Bạn có thể ví dụ: định cấu hình WildFly để đặt cookie miền được chia sẻ ở định dạng được mã hóa và xác minh cookie trong cấu hình Bảo mật mùa xuân của bạn.


  1. ở đâu để tôi xác định vai trò (cho mỗi kịch bản)?

Với Spring SAML bạn xác định vai trò khi xử lý phản hồi SAML bằng ví dụ: phân tích cú pháp các thuộc tính SAML. Điều này được thực hiện bằng cách triển khai giao diện SAMLUserDetailsService và cắm vào samlAuthenticationProvider.

Với Shibboleth bạn có thể chuyển tiếp các thuộc tính nhận được từ IDP đến ứng dụng của bạn với tiêu đề và phân tích cú pháp chúng trong ứng dụng của bạn.

WildFly (có thể) cho phép bạn xác định bối cảnh bảo mật và vai trò trực tiếp trong SP mà không cần cấu hình điều này trong ứng dụng của bạn. Cấu hình như vậy có thể không di động trên các máy chủ ứng dụng.


  1. nào là sự lựa chọn đáng giá?

Tất cả các tùy chọn sẽ cho phép bạn thực hiện WebSSO với SAML 2.0. Mọi người thường chọn dựa trên yêu cầu của họ (ví dụ: nhu cầu tùy chỉnh), môi trường (máy chủ web được sử dụng, máy chủ ứng dụng), phương pháp phát triển ưu tiên (Java, .NET, khác), khung được sử dụng, mã cũ. Cả hai plugin Spring SAML và Shibboleth đều được nhiều khách hàng sử dụng.

+0

Câu trả lời xuất sắc, cân bằng. –

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