2009-09-21 16 views
15

Chcę utworzyć bezpieczny mechanizm logowania/wylogowania. Zacząłem czytać następujące artykuły zorientować rzeczy do uwzględnienia:Jak zaimplementować stronę logowania HTTPS w aplikacji internetowej?

artykułach te sprawiają pewne zalety, ale myślałem wykorzystaniem protokołu HTTPS w sposób w podobny sposób, jak strona logowania poczty Yahoo. No wiesz ... wpisujesz http://mail.yahoo.com i jesteś przekierowywany na stronę HTTPS, taką jak ** https: //**login.yahoo.com/config/login gdzie wstawiasz swoją nazwę użytkownika i hasło, a po zweryfikowaniu twoich danych uwierzytelniających przekierowywany powrót do strony HTTP z wygenerowanym ciasteczkiem session_id, a cała komunikacja z tego miejsca odbywa się za pośrednictwem protokołu HTTP przy użyciu pliku cookie.

Co jest potrzebne do wdrożenia tego zachowania?

Chcę to zrobić dla dwóch aplikacji internetowych Java (jedna z Spring framework i jedna z Struts 1), ale nie wiem dokładnie, jak zintegrować tę część HTTPS z aplikacją (nigdy wcześniej nie pracowałem z HTTPS).

Odpowiedz

15

Przede wszystkim musisz włączyć SSL dla swojego serwera. Dla Tomcat potrzebne do wygenerowania kluczy OpenSSL i dodaj następujący złącze do server.xml:

<Connector port="8443" scheme="https" secure="true" SSLEnabled="true" 
    keystoreFile="mykeystore" sslProtocol="TLS" 
    keystorePass="keystore password" /> 

Aby zintegrować SSL do aplikacji polecam wiosna Security. Oferuje dokładnie to, czego potrzebujesz (zaloguj się przez HTTPS, a następnie przekieruj do HTTP). Wszystko co musisz zrobić, aby je realizować, jest ustawienie forceHTTPS true:

<bean id="authenticationProcessingFilterEntryPoint" 
class="org.springframework.security.ui.webapp.AuthenticationProcessingFilterEntryPoint"> 
    <property name="loginFormUrl" value="/pages/login.jsp" /> 
    <property name="forceHttps" value="true"/> 
</bean> 

wiosny kursu i bezpieczeństwa wiosennego mają dość stroma krzywa uczenia się, ale to jest całkowicie warto. Zrób to raz, a następnie możesz zastosować go do nowych aplikacji w mniej niż godzinę. Możesz użyć Spring Security zarówno w aplikacji Spring, jak i Struts.

Bezpieczeństwo wiosenne niegdyś było zabezpieczeniem Acegi. To jest article, od którego zaczniesz.

3

Nie wiem o żadnych szczegółach Java lub wiosną, ale w ogóle:

1) Konfigurowanie cert SSL na swoim serwerze.

2) do przodu lub link do absolutnego URL (https: // na początku), gdy dzieje się strona logowania

3) do przodu do absolutnego URL (wraz z http: //) po udanym uwierzytelnieniu.

4) Należy zaznaczyć kod strony logowania, aby akceptować tylko połączenia https.

Oczywiście mogą istnieć określone sposoby wykonywania przekierowania http/https bez odwoływania się do jawnego określania pełnego adresu URL.

3

@see Acegi (bezpieczeństwo wiosna)

myślę, że zawiera wszystkie niezbędne składniki. Na przykład obsługuje logowanie przez https. Jest dobry reference. Jak uzyskać login https można przeczytać here. Myślę, że powinieneś przeczytać wszystko.

+1

prawdopodobnie chcesz wyjaśnić nieco więcej na temat tego, która część acegi widzi – Chii

+0

Czy możesz podać przykład wykorzystania Acegi do implementacji tej funkcji? –

+0

Dzięki za komentarze. Dodałem kilka linków, ponieważ trudno tu umieścić wszystkie wymagane szczegóły. –

1

Zaleciłbym zbadanie pewnego rodzaju rozwiązania jednokrotnego logowania. Szybkie wyszukiwanie w Google daje między innymi JOSSO, Open SSO i CAS. Pracowałem już trochę z CAS i miałem z nim pozytywne doświadczenia. Spring Security ma również wbudowane wsparcie do pracy z CAS.

1

Załaduj dla bezpiecznych stron skrypt sprawdzający token.

na początku skryptu:

if(!getSecurityToken()) // 1 
    redirect(login_page) 

if(!checkToken(token)) // 2 
    redirect(login_page) 

strona logowania należy ustawić bezpieczną żeton i utworzyć sesję, która zostanie następnie przekazana w żądaniu. Serwer śledzi, która sesja jest właścicielem danego tokena. W celu implementacji serwera musisz zaimplementować dla skryptów metodę checkToken. Token powinien być zapisany w ciasteczkach lub w inny sposób zapisany na stronie (dla kolejnych żądań).

Gdy żądanie jest wysyłane do serwera, musi zawierać token, inaczej przekieruje się niepowodzeniem (1).

Po wygaśnięciu sesji użytkownika (po wylogowaniu lub przekroczeniu limitu czasu) mapowanie na serwerze nie będzie już istniało (identyfikator sesji do tokena), a zatem wszelkie nowe żądania z tokena będą nieprawidłowe i spowodują przekierowanie (2) .

Powiązane problemy