Auf der Suche nach einer einfachen, sicheren Sitzung-design mit servlets und JSP
Ich arbeite an einer intranet-web-Anwendung (J2EE), erfordert einige grundlegende Sicherheits-features. Es gibt relativ wenige autorisierte Benutzer für die Seite, aber ich muss es noch implementieren, irgendeine Art von sicheren Sitzung.
Den grundlegenden Ablauf ich freu mich auf Besuch-site => log-in => site => Abmelden wenn Sie fertig sind (oder automatisch Abmelden, wenn der browser geschlossen wird). Nichts besonderes, nicht einmal eine "remember me" - option bei der Anmeldung. Die meiste Arbeit für die Authentifizierung ist bereits getan - die Website ist zugänglich nur über https, und ich habe eine Datenbank, die speichert Benutzernamen und (verschlüsselte) Passwörter.
So, nachdem sich der Benutzer angemeldet hat, was ist der einfachste (im Idealfall keine cookies hinaus, was JBoss/JSPs tun würde, hinter den kulissen) Art und Weise zu implementieren, die eine sichere Sitzung? I. E. verhindern, dass Benutzer nur direkt anfordert Seiten über den login-Bildschirm, etc.
Ist es nur eine Frage der überprüfung der session für einige "isUserAuthenticated"-wie Wert und überprüft, ob die session existiert (z.B. request.getSession(false)
) für alle eingehenden Anfragen in meinem servlet? Was ist zu verhindern, dass Benutzer erste JSP-Dateien und erzwingen Sie die Verwendung einer servlet für alle Anforderungen? Alle anderen überlegungen (und deren Lösungen)?
- Für den ersten Teil, möchten Sie vielleicht zu prüfen, stackoverflow.com/questions/348090/...
- Das ist definitiv die Art von Sache, die ich im Sinn hatte. Nicht, dass es ist eleganter (ich vermute, ich würde nur schauen, dass der Wert bei jeder Anforderung der Seite), aber es scheint sehr minimal.
- Ich habe angesprochen, Ihre Fragen in einem Kommentar - bitte werfen Sie einen Blick. Während es offensichtlich Ihrer Wahl auf, wie Sie diese umsetzen, Bedenken Sie, dass, während es gibt einige, die Lernkurve beteiligt, mit dabei "der richtige Weg", es ist tatsächlich leichter und einfacher am Ende (wir sind buchstäblich sprechen über vielleicht 15-20 Zeilen von XML; das ist es).
- BTW, ich sage nicht, dass die akzeptierte Antwort ist der richtige Weg, dies zu tun, ziehe ich den
security-constraint
Weg.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt wie Sie können einfache deklarative Sicherheitsansatz.
Werfen Sie einen Blick auf Java EE Tutorial-Sektion für Sicherung Von Web-Anwendungen , besonders bei deklarative Sicherheit Abschnitt
Für spezielle Fragen:
Erklären Sie Ihre URLs im Web-App-descriptor (web.xml) mit einer entsprechenden Sicherheitsrolle. Sie werden unzugänglich für nicht autorisierte Benutzer (und Versuch Zugang zu Ihnen zu bringen forth eine login-Seite).
Alle, die völlig unnötig; - servlet-container, wird es für Sie tun hinter den kulissen.
Wie lange JSPs noch nie öffentlich zugegriffen werden müssen (z.B. Sie weiterleiten, um Sie in Ihrem servlet; du bist nie umleiten an eine JSP) Sie können erklären, Ihre URLs in einer Sammlung mit Sicherheit eine Rolle, dass ist eigentlich niemals einem Benutzer zugewiesen.
session.setAttribute("user", user);
Ich mich eingeloggt habe zwei verschiedene browser, die durch unterschiedliche Benutzer. Aber wenn ich JSESSIONID von einem browser, und fügen Sie es in einem anderen browser-user die JSESSIONID (mit browser-jessesion-editor-Erweiterung) dann war ich in der Lage, Zugriff auf andere Benutzer-Profil. Warum? keine Hilfe?