19

Chciałbym zaimplementować warstwę uwierzytelniania jednokrotnego logowania (Single Sign-on, SSO) w mojej aplikacji Spring, w celu wspierania uwierzytelniania i autoryzacji z różnych domen bezpieczeństwa. Wybrałem Shibboleth jako IdP, ale muszę jeszcze określić, co będę używać dla SP.Pojedyncze logowanie na wiosnę przy użyciu rozszerzenia SAML i Shibboleth

Do wyboru są:

  • Wiosna zabezpieczeń SAML Extension: komponent umożliwia zarówno nowych jak i istniejących aplikacji, aby działać jako dostawca usług w federacji na podstawie SAML protokół 2.0 i umożliwiają Web Single Sign-On. Spring Security Extension umożliwia bezproblemową kombinację SAML 2.0 i innych mechanizmów uwierzytelniania i federacji w jednej aplikacji. Wszystkie produkty obsługujące protokół SAML 2.0 w trybie dostawcy tożsamości (na przykład ADFS 2.0, Shibboleth, OpenAM/OpenSSO, RM5 IdM lub Ping Federate) mogą być używane do łączenia się z rozszerzeniem SAML Spring Security.

  • Shibboleth (również jako SP): Shibboleth to technologia internetowa, która implementuje HTTP/POST, artefakt, i przypisują naciskać profile SAML, w tym zarówno dostawca tożsamości (IDP) oraz Service Provider (SP).

Tak, mam kilka pytań:

  1. jest to dobry pomysł, aby użyć bezpośrednio Wiosna SAML jako SP w kategoriach skalowalność i łatwość konserwacji?
  2. Możliwe jest użycie zewnętrznego SP razem z Spring Security? Jak mam skonfigurować swoją aplikację i/lub mój serwer aplikacji (JBoss 8.0 - WildFly)?
  3. Gdzie mogę zdefiniować role (dla każdego scenariusza)?
  4. Co jest wartym wyboru?

poważaniem, V.

Odpowiedz

41

Główną różnicą między nimi jest scenariusz rozmieszczania:

  • Shibboleth SP wtyczki są stosowane bezpośrednio do/IIS serwer WWW Apache.
  • Wiosna SAML jest osadzona w aplikacji.

Oba mają zalety i wady.


  1. Czy to dobry pomysł, aby użyć bezpośrednio Wiosna SAML jako SP w zakresie skalowalności i konserwacji?

Wiosna SAML

  • Propozycje wielką kontrolę nad sposobem uwierzytelniania jest wykonywane i jak proces uwierzytelniania współdziała z aplikacją. Możesz np. tworzyć własne interfejsy konfiguracyjne i dynamicznie dodawać IDP, tworzyć niestandardowe ekrany logowania jako część aplikacji, mieć pełną i łatwą kontrolę nad obsługą błędów, z łatwością obsługiwać wiele IDP, dynamicznie konfigurowane szczegóły SSO (wymagane AuthnContexts, NameID, powiązania, wymuszanie uwierzytelniania).
  • Łatwe analizowanie odebranych atrybutów SAML w różnych formatach, obsługa wielu metod uwierzytelniania w tej samej aplikacji.
  • Dynamicznie generuj metadane SP, zapewnia ograniczoną dostępność dla wielu podmiotów i obsługuje profile niedostępne we wszystkich innych opcjach (np. Pojedyncze wylogowanie, właściciel klucza, odnajdywanie IDP).
  • Płynnie wchodzi w interakcje z programem Spring Security, który zapewnia zestaw korzyści. W Spring SAML możesz również skonfigurować kompletne zasady uwierzytelniania i autoryzacji bezpośrednio w aplikacji (np. Które strony wymagają uwierzytelnienia lub nie, i kiedy, kontrola dostępu do zasobów oparta na rolach, wzmocnienie uwierzytelniania w warunkach dynamicznych, ...).
  • Umożliwia wdrożenie aplikacji na dowolnym serwerze aplikacji lub kontenerze i za odwrotnym proxy lub serwerem WWW bez wpływu na funkcjonalność.

Shibboleth wtyczek

  • Są one skonfigurowane statycznie i zazwyczaj interakcję z aplikacją poprzez nagłówków HTTP. Oddzielają one logikę uwierzytelniania od samej aplikacji, więc jedyną rzeczą, którą należy się zająć, jest akceptacja nagłówków i inicjalizacja sesji aplikacji z właściwym kontekstem zabezpieczeń. Definicja, które strony są zabezpieczone, jest obecna na serwerze IIS/serwera Apache i na podstawie wzorców adresów URL, co oznacza, że ​​zasady uwierzytelniania i autoryzacji są częściowo zdefiniowane poza aplikacją.
  • Musisz upewnić się, że dostęp do aplikacji jest możliwy tylko za pośrednictwem serwera WWW (= zabronienie dostępu bezpośredniego), ponieważ pozwoliłoby to na fałszowanie nagłówków.
  • Nie wymaga wielu zmian w samej aplikacji i dlatego zazwyczaj można z łatwością korzystać z dotychczasowych systemów.

  1. Możliwe jest użycie zewnętrznego SP wraz z wiosennym Security? Jak mam skonfigurować swoją aplikację i/lub mój serwer aplikacji (JBoss 8.0 - WildFly)?

Tak, jest to możliwe, ale będzie wymagało wysiłku. Możesz np. skonfiguruj WildFly, aby ustawić plik cookie z dzieloną domeną w zaszyfrowanym formacie i zweryfikuj plik cookie w konfiguracji Spring Security.


  1. Gdzie zdefiniować rolę (dla każdego scenariusza)?

Ze Spring SAML definiujesz role podczas przetwarzania odpowiedzi SAML przez np. parsowanie atrybutów SAML. Odbywa się to poprzez implementację interfejsu SAMLUserDetailsService i podłączenie do samlAuthenticationProvider.

Za pomocą Shibboleth można przekazywać atrybuty otrzymane z IDP do aplikacji za pomocą nagłówków i analizować je w aplikacji.

WildFly (prawdopodobnie) pozwala na zdefiniowanie kontekstu zabezpieczeń i ról bezpośrednio w SP bez potrzeby konfigurowania tego w aplikacji. Taka konfiguracja może nie być przenośna na różnych serwerach aplikacji.


  1. Który jest opłacalne wybór?

Wszystkie opcje umożliwią wykonanie WebSSO z SAML 2.0. Ludzie zazwyczaj wybierają w oparciu o swoje wymagania (np. Potrzeby dostosowywania), środowisko (używany serwer WWW, serwer aplikacji), preferowaną metodologię programowania (Java, .NET, inne), używane struktury, starszy kod. Zarówno Spring SAML, jak i wtyczki Shibboleth są używane przez wielu klientów.

+0

Doskonała, zrównoważona odpowiedź. –