Announcement

Collapse
No announcement yet.

Authentifizierung und Pagerestriction

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Authentifizierung und Pagerestriction

    Hey Ho,
    ich schildere erstmal was ich überhaupt erreichen will und dann warum ich kurz davor bin amok zu laufen... (oh, das darf man in der heutigen Zeit nicht zu laut sagen, sonst stehen ruck zuck die Bullen vor der Tür )

    Folgendes:
    Ich habe, um es einfach zu halten 2 Seiten:
    • index.xhtml
    • secure.xhtml

    Auf der index.xhtml kann sich ein User mit seinem Nick und PW anmelden. Wenn er sich erfolgreich anmelden kann gelangt er auf secure.xhtml. Ansonsten kommt ne Fehlermeldung oder sonstwas, ist auch völlig egal.

    Nun möchte ich es so bewerkstelligen, dass wenn sich ein User nicht anmeldet, er auch keinen zugriff auf die secure.xhtml bekommt. D.h. wenn er im Browser manuell secure.xhtml aufruft, dann soll er entweder eine Fehlermeldung bekomme oder zurück auf die index.xhtml geleitet werden.

    Also eine ganz normale Authentifzierung, wie sie in jeder verdammten Webanwendung implimentiert ist und auch funktioniert.. möchte man meinen.

    Nun gibt es dafür natürlich jede Menge Ansätze, von denen ich nicht in der Lage bin nur ein einziges davon zu implimentieren. Wahrscheinlich bin ich einfach nur scheisse dumm!

    Möglichkeit 1: Container Authentifizierung
    Ich habe eine Datenbank mit der Tabelle "LOGIN" mit den Spalten
    • username
    • password
    • role

    Meinem Tomcat mache ich via <Reaml....> die Datenbank, Tabellenname und Spalten bekannt und implimentiere auf der index.xhtml mit <form> meine Loginmaske.
    Das sieht dann stark vereinfacht in etwa so aus:

    Code:
    <form action="j_security_check>
    <input name="j_username" />
    <input name="j_password" />
    </form>
    Danach passe ich noch meine Rollen, security-constraints und login-config in der "web.xml" an und los gehts.....

    Yehaa, geil, funktioniert! Ich gebe Username und Password ein. Die Daten werden gegen die Datenbank geprüft, es wird nach der Role gesucht und BATZ, ich bekomme Zugriff auf die für die Rolle vorgesehenen Webseiten.

    Dumm nur, dass ich persöhnlich die Passwörter meiner User nicht im Plaintext in der Datenbank speichere, sondern diese verschlüssele. Das ganze funktioniert dann über eine LoginBean. Das eingegebene Password wird verschlüsselt und dann mit dem verschlüsselten Passwort in der Datenbank verglichen. Mit einer Bean und Javamethoden im Hintergrund klappt das wunderbar. Aber wie funtzt das mit dem
    • <realm>-krams
    und dem
    • "j_security_check"
    . Woher weis mein Tomcat, dass meine Passwörter verschlüsselt sind UND woher weis er, welche Verschlüsselung ich verwende? Kann man ihm das irgendwo sagen?
    Oder kann man
    • "j_security_check"
    auch irgendwie mit JSF verwenden, sprich <h:input.... />, sodass ich auch Beans benutzen kann?

    Möglichkeit2,3 und 4: PhaseListener, Filter,HttpSessionListener
    Im WWW finden sich einige Möglichkeiten so eine Restriction mit den oben genannten Methoden zu lösen. Allerdings haben allesamt das Problem, dass überprüft wird ob es eine Session gibt. Wenn es eine Session gibt ist alles cool und ansonsten wird der Zugang zu den Webseiten verwehrt. Das Problem ist nur, dass sobald ich index.xhtml aufrufe ich eine neue Session erhalten. Dabei habe ich mich aber noch garnicht angemeldet. D.h. es muss eine Möglichkeit geben Informationen aus der Session zu lesen, oder aber irgendwie zu prüfen ob nicht nur die Session vorhanden ist sondern ob sich auch wirklich schon jemand angemeldet hat. Leider habe ich keinen Schimmer wie man das macht oder bin einfach zu blöd zum suchen.

    Ich dachte dieses Security-Problem sei ein Standardproblem und einfach zu lösen, aber nachdem ich nun rund 7 Bücher über JSF gelesen habe (keine Panik, ich habe die Büchet nicht von Anfang bis Ende gelesen) in denen immer was von Security, PhaseListener, Authorization, etc gestanden hat, aber nie gezeigt wurde wie das Problem realisiert wurde; ich im WWW alles mögliche recharchiert habe, aber nie eine sinnvolle und vorallem vollständige Lösung gefunden habe; und ich nun seit über 2 Monaten am verzweifeln bin und garnicht mehr weiter weis bin ich nun soweit gegangen das ich mich in einem Forum angemeldet habe um um Hilfe zu bitten!

    Es ist echt zum kotzen. Es klappt alles wunderbar mit JSF, bis auf diese Scheisse hier....Dieses Problem macht mich kaputt!
    Es muss doch eine Möglichkeit geben mehr oder weniger einfach überprüfen zu können ob in der Session schon Informationen über den User vorhanden sind oder nicht. Jetzt hat man schonen nen voll geilen Lebenszyklus wo man mit dem Phaselistener auf jede einzelne Phase zugreiffen kann, aber es ist niergends ordentlich dokumentiert wie man sinnvoll so ein Securityconstraint implimentiert.

    Also ich bin soweit das ich auf die Session zugreifen kann, aber wie sehe ich da, welche Attribute das Scheissteil drin hat?

    Hatte jemand schon mal mit so nem Problem zu kämpfen gehabt? Iich würde euch nicht fragen und auch nicht so nen sinnlosen Post eröffnen, wenn ich nicht völlig verzweifelt und am Ende wäre

    Danke!
Working...
X