Spring - Single Sign On

0

Witam,
Od pewnego czasu szukam w sieci informacji na temat realizacji modelu SSO przy użyciu Springa. Do tej pory wpadłem na dwa rozwiązania:

  1. Użycie Spring Security SAML. O ile dobrze rozumiem to użytkownik rejestruje się u IDP (np. SSOCircle) i w momencie logowania dostaję tylko jego id. Minusem tego rozwązania jest to, że będę trzymał u siebie wszystkie dane użytkowników, więc automatycznie dla kilku aplikacji klienckich będę musiał mieć wspólną bazę danych. Dodatkowo nie mogę zezwolić użytkownikowi (z poziomu aplikacji) na zmianę hasła - musi to zrobić u IDP.

  2. Napisanie własnego IDP. Tutaj problem leży w tym, że w aplikacjach korzystających z IDP będę musiał nadpisać kilka metod dostarczonych przez Spring Security. Na przykład - sprawdzanie czy użytkownik jest zalogowany. Najpierw sprawdzam czy istnieje ciastko z tokenem dla użytkownika zalogowanego, jeżeli nie to muszę odpytać IDP o to czy użytkownik nie przedłużył sesji przez inną aplikację. Jak do tej pory nie znalazlem żadnych informacji w jaki sposób nadpisać tę jedną metodę.

Nie ukrywam, że 2 opcja jest dla mnie znacznie ciekawsza, ponieważ mogę dowolnie konfigurować IDP oraz wydzielić go do samodzielnej aplikacji z osobną bazą danych, do której dostęp będzie miał tylko dostawca. Co więcej, będę miał możliwość wystawienia API dla klientów np. w celu zmiany danych konta użytkownika.

Czy znacie inne rozwiązania dla modelu SSO w aplikacjach bazujących na Springu?

1 użytkowników online, w tym zalogowanych: 0, gości: 1