SSO dla tomcata

0

hejka:)

takie pytanie - w jaki sposób można by w prosty sposób zrobić usługę SSO (pojedyncze logowanie) dla aplikacji webowej, tak zeby działało to w tomcacie. w skrócie:
-user zglasza żądanie w przegladarce o dostep do jakiejs strzezonej tresci
-tomcat to przejmuje i wysyła do Active Directory prosbe o porownanie loginow (login powinna przechowywac chyba przegladarka? czy wcyiagac go z innego miejsca? userzy w systemie i w active directory maja identyczne loginy).
-jesli sie zgadzaja to active directory zwraca ten login
-tomcat przekierowuje na strone, do której chcieliśmy się dostać, przesylając login usera.

niby widzialem jakies propozycje - np kerberus, ale nie bardzo wiem od ktorej strony sie za to zabrac.

0

również mam podobne zadanie do wykonania i chętnie skorzystałbym z jakichkolwiek wskazówek :-)

0

O ile mi wiadomo to to tak wlasnie dziala: uzytkownik chce dostac strzezona stronke, kontener servletow widzi ze ona jest strzezona, wiec wysyla standardowe okienko identyfikacji http albo przekierowuje na stornke logowania. Dodatkowo w tomcacie mozna skonfigurowac tzw realmy, czyli implementacje pewnego interfejsu za pomoca ktorego tomcat sprawdza usera i haslo.
O realmach: http://tomcat.apache.org/tomcat-6.0-doc/realm-howto.html (jest kilka, np jdbc, memory, musicie napisac swojego ktory bedzie sie laczyc np z active directory czy innym serverem ldap). Link ktory podalem pokazuje rowniez jak taka implementacje podpiac pod aplikacje (server.xml w tomcacie).
O konfiguracji zasobow jako strzezonych: (http://java.dzone.com/articles/understanding-web-security), mozna poszukac duzo wiecej zrodel, najlepsza jest specyfikacja servletow.
Powodzenia.

0

a co w przypadku, gdy nasza aplikacja korzysta z wlasnej autoryzacji (bez uzycia zewnetrznej, np kerberosa). chcemy umozliwic wlasnie sso przez active directory (identyczne nazwy kont), jednak w przypadku jakiegos bledu powinno byc rowniez mozliwe manualne logowanie. czy mozna cos takeigo osiagnac?

0

Zupelnie nie rozumiem powyzszej wypowiedzi, przykro mi, wiec nie wiem czy odpowiem tak jak oczekujesz.
Korzystacie z wlanych mechanizmow, czy z kerboerosa, czy active directory?
Co do logowania - jesli zaimplementujecie i skonfigurujecie odpowiedni interfejs w tomcacie (jak w linku) to mozecie nawet zrobic identyfikacje na podstawie czytnika czy ilosci plam na sloncu. Wiec tak, jesli macie active directory, ale np nie uda sie z nim polaczyc, to mozecie to wylapac i zrobic cos w stylu backupowej identyfikacji za pomoca jakichs wlasnych mechanizmow. Pytanie tylko czy to dobry pomysl jesli chodzi o bepzieczenstwo - jesli active directory zwrocil blad to znaczy ze cos jest nie tak z kredencjalami osoby logujacej sie, jesli natomiast AC lezy, to nalezy go z powrotem postawic na nogi.

0

Dodatkowo, nie rozumiem uzycia nazwy / skrotu SSO - single sign on polega na tym ze np na tomcacie macie 5 aplikacji, i wystarczy ze uzytkownik zaloguje sie do jednej z nich, i juz nie musi do pozostalych. Krzystanie z zewnetrznych mechanizmow identyfikacji to co innego niz SSO.

0

ze swojej strony zaznaczę tylko, że system logowania na zasadzie:
login usera zalogowanego w systemie istnieje w AD nijak ma się do zabezpieczenia aplikacji.
Nawet uwzględniając oczywisty fakt, że użytkownicy nie mają możliwości założenia konta lokalnego na swoich komputerach, to wystarczy podłączyć do sieci choćby laptopa, i stworzyć sobie na nim konto lokalne o dowolnej nazwie i już mamy dostęp do tak "zabezpieczonej" aplikacji.

0

co rozumiem przez sso - uzytkownik loguje sie na wlasne konto w active directory i w tym momencie nie musi sie logowac do aplikacji na tomcacie - przegladarka/serwer powinny to wylapac i wejsc na dana strone juz jako zalogowany user.

a czy jest to bezpieczne - nie wiem, tak ma być :) mozliwe ze chodzi o mozliwosc zalogowania, gdy ktos nie ma konta w AD.

0

Czyli wlaczam kompa, loguje sie do active directory, wlaczam przegladarke, wlaczam stronke i chce dojsc do zabezpieczonej stronki, i nie musze sie logowac bo juz jestem zalogowany?
Jesli tak, to troche trudniejsze zadanie poniewaz zalogowany jest klient (twoj uzytkownik na kompie), a infrastruktura tomcata / servletow do logowania jest na serwerze, musialbys miec jakis sposob aby przeglararka wyslala do aplikacji kredencjaly, np usera i haslo, certyfikat czy cos takiego. Np jakies cookie czy cos, ale to jest niebezpieczne.

0

@pet - nie do konca chyba zczailes o co chodzi, poza tym linka do tomcata podalem juz wczesniej. Albo ja nie zczailem, i kombunuje za bardzo, co jest rownie prawdopodobne ;d

0

Osobiście nie widziałem nigdzie rozwiązania dla zinegrowanego logowania w tomcacie - takiego jakie udostępnia IIS, gdzie użytkownik będący w domenie bądź w domenie zaufanej nie musi wypełniać formularza logowania do aplikacji webowej.

Osobiście raz potrzebowałem użyć takiego sposobu logowania - rozwiązanie w moim przypadku było proste -aplikaca w .NET + C# na IIS :)

0

Otoz to, dlatego wlasnie napisalem ze to jest bardziej wymagajace, i ze trzeba cos wysylac na server, to jak inaczej serwer ma wiedziec kto to wysyla?

0

czyli np taka koncepcja mogłaby zadziałać:
-zdefiniować realm ze wskazaniem na baze userow AD jak pokazano np tu: http://mystyleit.com/blogs/mystyleit/archive/2009/05/22/tomcat-authentication-to-active-directory.aspx, w ten sposob dokonywac autoryzacji, a w przypadku odrzucenia przekierowac na manualne logowanie? ma to w ogóle jakikolwiek sens? :) sorry za pewnie głupie pytania, ale pierwszy raz mam doczynienia z sso, tomcatem i ogolnie takim problemem :P

0

Nie zadzialaloby poniewaz jak zdefiniujesz realm z AD, to pierwsza stronka i tak bedzie wymagala logowania, kolejne juz nie. To co Ty chcesz chyba uzyskac to zalogowac sie najpierw, a pozniej wlaczyc przegladarke i aplikacje i jzu sie nigdy nie logowac. To tak nie zadziala, serwer nie wie kto sie loguje, musisz wysylac jakies informacje dla tomcata, o tym juz pisalem.

0

Moze na poczatku kilka pojec dla ustalenia uwagi:

  • SSO, czyli single sing on jest mechanizmem pozwalającym użytkownikowi zalogować się raz do szerokopojętego "systemu" i korzystać z różnych komponentów tegoż "systemu", w szczególności z aplikacji i to bez konieczności logowania się do każdej z nich z osobna
  • autentykacja - weryfikacja tożsamości użytkownika
  • autoryzacja - sprawdzenie czy użytkownik ma prawo do danego zasobu

Autentykować użytkownika możesz różnie, np. za pomocą pary login/hasło i wtedy weryfikować te dane w oparciu o jakiś rejestr (np. baza danych, plik zawierający pary login/hasło, Active Directory, inne wymyślne usługi w postaci webserwisów, itd. itp.)

Autoryzować tmożna takowoż różnie:

  • korzystając z mechanizmów ról w J2EE i mapując np. grupy do których przypisany jest użytkownik w Active Directory na role widziane przez serwer aplikacji)
  • mając mechanizm na poziomie aplikacji i trzymając w bazie danych informacje (userX ma prawo do operacjiX,operacjiY,operacjiZ, zaś userY tylko do operacjiC)

W Twoim pisząc SSO masz zapewne na myśli autentykację. Zakładajc, że użytkownik wpisuje adres aplikacji, jak chciałbyś się dowiedzieć jaki to użytkownik ?

  • wyświetlając okienko z pytaniem o login/hasło i próbując autoryzować użytkownika w oparciu o próbę zalogowania do Active Directory z podanym loginem / hasłem
  • korzystając z tego że użytkownik jest zalogowany w domenie
  • jeszcze inaczej ?

pozdr,
yarel

0

Jest takie slowo autentykacja? Identyfikacja wydaje sie lepsze.

0

wydawało mi się ze internet explorer ma wbudowaną taką usługę do auto-logowania w strefie intranetu (dla zdefiniowanych wczesniej adresow) + zintegrowane uwierzytelnianie windows.

schematycznie to miało być cos takiego:
-tomcat przechwytuje zadanie o dostep do chronionej tresci(tutaj chyba wlasnie IE powinno zrobic te auto-uwierzytelnianie) -> wysyla zapytanie do AD, ktore sprawdza usera -> AD zwraca login usera lub blad do tomcata ->w przypadku sukcesu tomcat robi przekierowanie pod loginem owego usera do wybranej stronki. w przypadku braku - przekierowanie do stronki z manualnym logowaniem.

pokręcone troche :) no ale ok, jesli nie tak to pewnie trzeba będzie pomyślec nad czymś innym. może kerberos + apache? CAS chyba tez moglby chyba cos takiego obslugiwac. no nic, troszke czytania mnie jeszcze czeka.

0

Jesli zrobisz realm AD na tomcacie, to go nie interesuje skad bedzie mial dane. Jesli tak skonfigurujesz IE zeby przechwytywal zadanie servera o podanie loginu i hasla, sam wykonywal pytanie do AD i przesylal odpowiedz, to mozna tak zrobic. Nie uzywam IE wiec nie wiem czy tak sie da czy nie, ale piszesz ze sie da to dzialaj.

0

W języku polskim słowa autentykacja faktycznie nie ma. Jest za to uwierzytelnianie. Nie jestem humanistą to i na błędy staram się patrzeć z dystansu ;-)

Jeśli założyć, że wszystko dzieje się na podwórku Windows + IE, to prawdopodobnie chcesz skorzystać z NTLM.

Tu http://www.innovation.ch/personal/ronald/ntlm.html masz ładnie opisane jak wygląda schemat komunikacji klient (C) - serwer (S).

Wątpię żeby chciało Ci się implementować osługę NTLM od 0 ;-)
http://www.josso.org
http://jcifs.samba.org/

pozdr,
yarel

0

Rowniez z checia przeczytam o tym, dzieki za linki.

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