Browsed by
Tag: security

Apache Shiro part 2 – securing a JSF Java EE 7 application

Apache Shiro part 2 – securing a JSF Java EE 7 application

apache shiro logo

In the first part I described why I chose Apache Shiro as an Authentication framework. In this part I will describe the simplest working solution to secure a Java EE7 application with JSF/Primefaces frontend. To be honest I wont use much of Primefaces in this sample but the application for which I did this research uses it so I added the dependency here and added an Primefaces component to this demo project.

Bootstrapping

I created an empty Java EE project via maven and added the needed Shiro dependencies as well as the Primefaces dependency to

the pom file.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>de.are_you_ready</groupId>
    <artifactId>shirotest</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <failOnMissingWebXml>false</failOnMissingWebXml>

        <apache-shiro.version>1.3.2</apache-shiro.version>
        <primefaces.version>6.0</primefaces.version>
        <junit.version>4.12</junit.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- Security -->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-core</artifactId>
            <version>${apache-shiro.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-web</artifactId>
            <version>${apache-shiro.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-ehcache</artifactId>
            <version>${apache-shiro.version}</version>
        </dependency>

        <!-- PrimeFaces -->
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>${primefaces.version}</version>
        </dependency>

        <!-- Testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Logging -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>shirotest</finalName>
    </build>
</project>

Read More Read More

Apache Shiro part 1 – selecting a Java security framework

Apache Shiro part 1 – selecting a Java security framework

apache sharp logo
What is Shiro?
Apache Shiro is an open source Java security framework which makes authentication, authorization and cryptography very easy to use with a simple and small configuration. It is very portable because of its independence from the used application frameworks and covers all kinds of scenarios from console over desktop client to web applications.

Why Shiro?
I searched for a security solution (authorization and authentication) which I plan to reuse in multiple “pet projects” without having to think about the same problem over and over again. My actual project is a web project based on Java EE 7 and has at the moment a JSF/Primefaces frontend. I plan to extend the application with a REST interface and an alternative UI technology for personal testing/learning and research purposes. Maybe there will also be an iOS app later on which should use the then existent REST endpoint. With that in mind I need a flexible framework to support securing JAX-RS endpoints as well as my actual JSF UI.
I previously had some experience with the Java EE standard solution JAAS as well as the JBoss project Picketlink. Additional to that I’ve worked in projects using Spring Security (but had not much to do with it) which seems to be the industry standard nowadays but besides that I did a little research about possible alternatives I wasn’t aware of and came up with Apache Shiro and Keycloak.
This four/five tools and frameworks were the solutions I considered and researched which would be the best fit for me.

Read More Read More

Sicheres Surfen auf Facebook [UPDATE]

Sicheres Surfen auf Facebook [UPDATE]

Im Zusammenhang mit Facebook über Sicherheit zu reden ist ja so eine Sache, aber wie letztes Jahr (nicht zuletzt durch die Firefox Erweiterung Firesheep) gezeigt wurde ist es ein extremes Sicherheitsrisiko sich vor allem auf Seiten die der privaten Kommunikation dienen ohne eine permanent gesicherte Verbindung zu bewegen da die Gefahr des Identitätsdiebstahles besteht.

Facebook hat heute endlich darauf reagiert und bietet die Möglichkeit der dauerhaften SSL Verschlüsselung an die wirklich jeder einschalten sollte der Facebook nutzt. Zu finden ist die Option unter folgenden Menüpunkten:

Konto => Kontoeinstellungen => Kontosicherheit => Sicheres Durchstöbern

UPDATE:

Wie ich auf heise.de gerade lesen konnte gibt es ein Problem auf das unbedingt geachtet werden sollte. Beim benutzen von dritthersteller facebook Apps wird https deaktiviert da diese damit nicht kompatibel sind. Diese Deaktivierung ist nicht vorübergehend sondern permanent. Die Einstellung sollte also dringend im Anschluss wieder aktiviert werden. So ein Vorgehen seitens facebook zeigt nur mal wieder wie unwichtig denen die Sicherheit eigentlich ist

Verschlüsselung von portablen Medien

Verschlüsselung von portablen Medien

Als Informatiker und/oder Nerd hat man eigentlich immer ein portables Speichermedium wie z.B. einen USB Stick dabei auf dem gewisse Dinge wie Portable Mailclients, der Lieblingsbrowser oder auch schonmal ein paar Dokumente liegen und trotzdem noch genug Platz übrig ist um mal schnell ein paar Files herunter zu laden und mitnehmen zu können. Einige dieser Dinge wären durchaus schützenswert, da man bei Verlust nicht unbedingt möchte das der Finder sie aufrufen und nutzen kann (z.B. der Lebenslauf oder eben das eMail Archiv). Ich habe mir lange Gedanken gemacht ob man nun anfängt mit cryptsetup das ganze Device zu verschlüsseln da das den Vorteil hat das man sehr bequem direkt beim anstecken nach dem Passwort gefragt wird, aber der Nachteil ist das es praktisch nur unter Linux verfügbar ist. Es gibt zwar eine kompatible Windows Lösung doch die dürfte praktisch so gut wie nirgends anzutreffen sein und zum Nutzen dieser werden obendrein noch Adminrechte benötigt die man leider oft in der Firma oder Hochschule nicht hat. Aus eben dem Grund entfiel auch die Idee Truecrypt einzusetzen. Dies ist zwar ebenfalls sehr sicher, aber trotz der verfügbaren Portable Version werden hier Adminrechte gebraucht und da man einen USB Stick ja hat um ihn überall nutzen zu können macht so eine Einschränkung wenig Sinn. Es gibt dann noch ein paar sehr suspekte Alternativen die weder verraten wie Ihre Verschlüsselung funktioniert noch für mehrere Betriebssysteme verfügbar wären.

Ich bin letztlich zu dem Schluß gekommen das es für mich wohl das praktikabelste ist Rar mit Verschlüsselung zu nutzen. Man muss dazu wissen das bei Rar seit einigen Jahren der als sicher geltende AES-128 Cypher eingesetzt wird. Bei ausreichender Passwortlänge ist das eine akzeptable Lösung. Rar Entpacker gibt es für jedes OS in normaler und Portabler Version und man braucht nur Benutzerrechte um es zu nutzen. Man sollte bloß darauf achten die Komprimierung zu deaktivieren da es sonst immer etwas länger dauert bis man an seine Daten kommt.

Zertifikaten vertrauen unter Ubuntu

Zertifikaten vertrauen unter Ubuntu

Nachdem ich mich auf der letzten CeBIT an der heise Krypto Kampagne beteiligt hatte und endlich das langersehnte Zertifikat bekam musste ich feststellen das Evolution mir trotzdem immer mitteilte das der Schlüssel nicht verifiziert werden könnte und man somti nicht sicher sein könnte das es sich tatsächlich um die ausgewiesene Person handele. Nach einiger Recherche stellte ich fest das ich die heise Zertifizierungsschlüssel noch nicht in meinen GPG Keyring aufgenommen hatte und änderte das. An den Aussagen seitens Evolution änderte das aber nichts. Es war noch nötig das Vertrauen der heise Keys auf die höchste Stufe zu setzen (in Windows mit Thunderbird gab es kein vergleichbares Problem). Da das über die GUI aber nicht möglich ist muss das VErtrauen über die Bash gesetzt werden. Das geht folgendermaßen

gpg –edit-key keyID

Im folgenden befindet man sich quasi im Verwaltungsmodus für diesen Schlüssel. Hier muss einfach der Befehl "trust" eingetippt und anschließend das Vertrauen auf 5 gesetzt werden. Seither sind alle heise Zertifizierten Keys bei mir in Evolution grün und genießen vollstes Vertrauen.