2009-09-21 18 views
15

Ich möchte einen sicheren Login/Logout-Mechanismus erstellen. Ich begann die folgenden Artikel zu lesen eine Vorstellung der Dinge zu bekommen zu berücksichtigen:Wie kann ich eine HTTPS-Anmeldeseite in einer Webanwendung implementieren?

diesen Artikel einige gute Punkte, aber ich wurde mit HTTPS in ein Denken ähnlich wie die Yahoo Mail-Anmeldeseite. Sie wissen ... Sie geben http://mail.yahoo.com ein und Sie werden auf eine HTTPS-Seite wie ** https: //**login.yahoo.com/config/login umgeleitet, wo Sie Ihren Benutzernamen und Ihr Passwort eingeben und nachdem Ihre Zugangsdaten verifiziert sind, werden Sie umgeleitet Zurück zu einer HTTP-Seite mit einem generierten session_id Cookie und alle Kommunikationen von dort sind auf HTTP mit dem Cookie.

Was benötige ich, um dieses Verhalten zu implementieren?

Ich möchte dies für zwei Java-Web-Anwendungen tun (eine mit Spring-Framework und eine mit Struts 1) aber nicht genau wissen, wie man diesen HTTPS-Teil in die Anwendung integriert (ich habe noch nie mit HTTPS gearbeitet).

Antwort

15

Zuerst müssen Sie SSL für Ihren Server aktivieren. Für Tomcat benötigen Sie einen openSSL Schlüsselspeicher und fügen Sie den folgenden Stecker zu server.xml generieren:

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

Um SSL in Ihre Anwendung zu integrieren empfehle ich Spring Security. Es bietet genau das, was Sie wollen (melden Sie sich über HTTPS an und leiten Sie dann zu HTTP um). Alles, was Sie es zu tun haben, zu implementieren, ist forceHTTPS auf true zu setzen:

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

Natürlich Frühling und Frühling Sicherheit eine ziemlich steile Lernkurve zu tun haben, aber es ist es auf jeden Fall wert. Tun Sie es einmal und dann können Sie es in weniger als einer Stunde auf neue Apps anwenden. Sie können Spring Security sowohl in der Spring- als auch in der Struts-Anwendung verwenden.

Spring Sicherheit war früher Acegi Sicherheit. Dies ist ein article, mit dem Sie beginnen können.

3

Nicht sicher über alle Java oder Feder Besonderheiten, aber im Allgemeinen:

1), um ein SSL-Zertifikat auf dem Server einrichten.

2) nach vorne oder Link zu einer absoluten URL (mit https: // am Anfang), wenn gehe Seite

3) nach vorne auf eine absolute URL anmelden (mit http: //) nach erfolgreicher Authentifizierung.

4) Fügen Sie einen Check in den Login-Seitencode ein, um nur https-Verbindungen zu akzeptieren.

Natürlich kann es rahmenspezifische Möglichkeiten geben, die HTTP/HTTPS-Weiterleitung durchzuführen, ohne auf die explizite Angabe der vollständigen URL zurückzugreifen.

3

@see Acegi (Frühling Sicherheit)

Ich denke, es alle erforderlichen Komponenten zur Verfügung stellt. Zum Beispiel unterstützt es Login über https. Es gibt eine gute reference. Wie man HTTPS Anmeldung erhält, können Sie here lesen. Ich denke du solltest alles lesen.

+1

Sie möchten wahrscheinlich ein bisschen mehr darüber erklären, welcher Teil von acegi zu sehen ist – Chii

+0

Können Sie ein Beispiel dafür geben, wie man Acegi verwenden könnte, um diese Funktionalität zu implementieren? –

+0

Danke für Kommentare. Ich habe einige Links hinzugefügt, weil es schwierig ist, hier alle erforderlichen Details anzugeben. –

1

Ich würde empfehlen, eine Single-Sign-On-Lösung zu untersuchen. Eine schnelle Suche in Google ergibt unter anderem JOSSO, Open SSO und CAS. Ich habe schon ein bisschen mit CAS gearbeitet und einige positive Erfahrungen damit gemacht. Spring Security hat auch Unterstützung eingebaut, um mit CAS zu arbeiten.

1

Laden Sie für sichere Seiten ein Skript, um das Token zu überprüfen.

am Anfang des Skripts:

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

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

Die Login-Seite sollte die sicheren Token gesetzt und eine Sitzung erstellen, die dann in der Anfrage übergeben würden. Der Server verfolgt, welche Sitzung welches Token besitzt. Um den Server zu implementieren, müssen Sie die Methode checkToken für Ihre Skripts implementieren. Das Token sollte in Cookies gespeichert oder sonstwie auf der Seite gespeichert werden (für nachfolgende Anfragen).

Wenn eine Anfrage an den Server gestellt wird, muss sie das Token enthalten, andernfalls wird redirect (1) fehlschlagen.

Wenn die Benutzersitzung abläuft (durch Abmeldung oder Zeitüberschreitung), ist das Mapping auf dem Server nicht mehr vorhanden (Sitzungs-ID zu Token-ID) und somit sind alle neuen Anfragen mit dem Token ungültig und verursachen eine Umleitung (2) .

Verwandte Themen