Page 1 of 1

Abbildung von Berechtigungen

PostPosted:02 Sep 2012, 10:27
by gene
Ich stelle mir die Frage, wie wir "Berechtigungen" in unserem System technisch abbilden werden.
Ich habe "geplant", über Apache Shiro auf jeder Webseite bestimmte Teile abhängig von den Berechtigungen des Benutzers ein- bzw. auszublenden bzw. passend anzupassen. Aber Shiro kann Berechtigungen auch ohne Webseiten umsetzen: jede beliebige Funktionalität, die programmiert ist, kann mit Berechtigungen hinterlegt werden.

Hat schon jemand Erfahrungen mit Apache Shiro gemacht oder vielleicht eine bessere Alternative zur Hand?

Einführende Informationen über Apache Shiro findet man hier:
http://www.infoq.com/articles/apache-shiro
http://shiro.apache.org/10-minute-tutorial.html

In Wikipedia findet man diese einleitenden Worte:
Apache Shiro (pronounced "sheeroh", a Japanese word for castle) is an open source software security framework that performs authentication, authorization, cryptography and session management. Shiro has been designed to be an intuitive and easy-to-use framework while still providing robust security features.
Ich finde Shiro sehr nützlich, es kann vermutlich Alles, was wir brauchen werden!

Mir kommen z.B. die folgenden Dinge in den Sinn:
  • nicht jeder Benutzer darf Spiele-Eingaben in das System machen (z.B. nur registrierte, eingeloggte)
  • nicht jeder Benutzer darf Eingaben anderer Benutzer "moderieren" (freischalten, ablehnen, etc.)
  • nicht jeder Benutzer darf Statistiken über unser System einsehen
  • nicht jeder Benutzer darf News eingeben / veröffentlichen
Das schöne an Apache Shiro ist, dass es sämtliche Funktionalität nicht nur für Web-Frontends anbietet, sondern auch auf "low-level-Ebene", was das System sicherer macht und auch das Testen des Programmcodes einfacher macht.

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 08:13
by Rene
Klingt echt nach einem sehr schönen framework. Nach dem ersten überfliegen der Artikel bietet es echt eine Menge. Wenn es dann noch sei einfach zu verwenden ist wie angegeben wäre es echt super.
Ich werde es mir auf jeden Fall mal näher anschauen und dann berichten wie es so funktioniert.

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 17:55
by StevenStorm
Habe bislang nur mit Spring Security/Acegi gearbeitet. Scheint mir ähnlich viel zu können, nur in der Handhabung etwas anders zu sein.
Am Ende kommt es da denke ich eher auf eine einfache Integration mit dem Frontend Framework an.

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 19:32
by gene
StevenStorm wrote:Am Ende kommt es da denke ich eher auf eine einfache Integration mit dem Frontend Framework an.
Die Integration ins WebFrontend ist denkbar einfach.
Um z.B. einem eingeloggten User etwas Anderes anzuzeigen als einem nicht eingeloggten, reicht der folgende Code in der JSP-Datei:
Code: Select all
<shiro:authenticated>
    logged in as 
    <span style="color: green; font-weight: bold; font-style: italic;">
      <shiro:principal/>
    </span>. 
    <a href="${contextPath}/Logout">logout</a>
</shiro:authenticated>

<shiro:notAuthenticated>
    <fmt:message key="please"/> <a href="<c:out value="${contextPath}" />/Login"><fmt:message key="login"/></a>
    <fmt:message key="or"/> <a href="<c:out value="${contextPath}" />/Register"><fmt:message key="register"/></a>.
</shiro:notAuthenticated>
Sehr einfach!

Details zur JSP-Integration findet man hier.

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 19:38
by StevenStorm
Sieht okay aus... (auch wenn JSP für mich kein WebFramework ist sondern ein Krampf vergangener Tage ;))

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 19:43
by gene
StevenStorm wrote:Sieht okay aus... (auch wenn JSP für mich kein WebFramework ist sondern ein Krampf vergangener Tage ;))
Zu dem "Krampf":
Da wir JSPs nur noch für den Präsentations-Layer verwenden und keinerlei Geschäftslogik da rainprogrammieren, sollte das OK sein. HTML pur geht ja nunmal nicht :D

Re: Abbildung von Berechtigungen

PostPosted:03 Sep 2012, 19:56
by StevenStorm
Wenn auch noch Geschäftslogik rein kommen würde, dann könnte man ja gleich PHP machen. Egal - ist hier nicht Thema.