2013-02-19 10 views
15

Mam konfigurację tomcat 7 z wdrożonymi wersjami oldApp.war i newApp.war. Obie aplikacje mają te same dane logowania do użytkowników w bazie danych.Jak zaimplementować jednokrotne logowanie na istniejącej aplikacji sieciowej tomcat

Mogę uzyskać dostęp do aplikacji, używając odpowiednio https://localhost/oldApp i https:localhost/newApp.

Moja oldApp to aplikacja Java java MVC, a kiedy użytkownik jest zalogowany do oldApp, chcę mieć link, który przeniesie użytkownika do nowej aplikacji bez pytania o dane logowania.

Chcę wiedzieć, jak zaimplementować SSO, aby to zrobić. Najlepiej nie chcę uruchamiać żadnej zewnętrznej usługi, aby sobie z tym poradzić.

Z góry dziękuję.

Odpowiedz

6

można zaimplementować SSO na wiele różnych sposobów:

  1. OAuth 2 - http://oauth.net/2/
  2. SAML 2 - https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=security

SAML 2.0 posiada wiele implementacje dla ról Identity/usługodawcy.

Na liście wdrożeń IDP mogę skierować Cię do tego stackoverflow postu: https://stackoverflow.com/a/761774/126414

Jeśli planują wdrożyć usługodawcy jest ładny rozszerzenie wiosna: http://static.springsource.org/spring-security/site/extensions/saml/index.html

+0

możesz podać źródło bez sprężyny –

+0

@JafarAli Czy mógłbyś podać więcej szczegółów w pytaniu? Jaki jest twój przypadek użycia? Czy masz już IDP (którego używasz?) I pracujesz nad SP, aby się z nim zintegrować? – svlada

+0

Posiadamy menedżera dostępu Oracle z obsługą SAML 2.0 jako IDP i Moja aplikacja przejmie rolę dostawcy usług. Moja aplikacja nie używa Springa. –

10

Aktualizacja: jej 2018 i poniższe informacje są nieaktualne. Jeśli uruchamiasz nową aplikację, użyj protokołu tożsamości federacyjnej, takiego jak Open ID Connect, a otrzymasz SSO za darmo.

Istnieje kilka podejść można podjąć:

  1. Można użyć Tomcat do uwierzytelniania i użyć Tomcat single sign on możliwości. Jeśli używasz Spring do uwierzytelnienia użytkownika, być może będziesz musiał zmienić niektóre rzeczy. Ponadto, w zależności od sposobu uwierzytelniania, uwierzytelnianie Tomcat może nie być wystarczająco konfigurowalne.
  2. Można ustawić trzecią serwletkę (lub podobną), do której uwierzytelniają się obie aplikacje internetowe.
  3. Można to ustawić samodzielnie przy użyciu Spring i pre-authenticated filters. Zasadniczo trzeba by napisać własny, wstępnie uwierzytelniony filtr, który sprawdziłby lokalizację, do której oba serwlety miałyby dostęp (baza danych ?, wspólny kontekst?) Dla istniejących poświadczeń, zanim powrócą do starych metod uwierzytelniania. Musisz się upewnić, że to uwierzytelnienie zostało usunięte w filtrze, aby następne żądanie nie automatycznie dziedziczyło poświadczeń poprzednich żądań.
+0

Adres URL CAS jest nieaktualny. Oto aktualny identyfikator URI: https://www.apereo.org/projects/cas – Elijah

+0

Dzięki, zaktualizowałeś adres URL – Pace

2

można wdrożyć Serwer CAS (który jest niczym innym jak wojną) w tomcat i odpowiednio skonfiguruj filtr aplikacji internetowej. Możesz wziąć pomoc z tego link.

0

udało mi się to z SSO zaworu Tomcat:

  1. Put SSO zaworu wewnątrz hosta (localhost) elementu server.xml pliku:

    <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> </Host>

  2. Dodawanie użytkowników i ról (np. w tomcat_users.xml):

    <user username="user1" password="user1" roles="employee"/>

  3. W web-app element aplikacjach web.xml pliku dodaj ograniczenia zabezpieczeń:

    <security-constraint> <web-resource-collection> <web-resource-name>App name</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>employee</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <realm-name>file</realm-name> <form-login-config> <form-login-page>/login.jsp</form-login-page> <form-error-page>/error.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>employee</role-name> </security-role>

  4. to wszystko. Teraz zaloguj się do jednej z aplikacji i powinieneś być zalogowany w innych aplikacjach.

Oczywiście nie należy używać hasła tekstowego w produkcji, to tylko szybki przykład. Należy rozważyć uwierzytelnianie Digest, a także konfigurowanie protokołu SSL na serwerze Tomcat.

Mam nadzieję, że to pomoże komuś!

Powiązane problemy