Cały dzień mi to zajęło (jakieś 4-5 godzin pracy), ale udało mi się zintegrować Vaadin, Guice i Shiro. Oraz napisać swój własny mały silniczek do zabezpieczania aplikacji Vaadin przed niepowołanymi łapkami.
Sprawa jest o tyle zabawna, że te trzy elementy dość ciężko razem spiąć. Oddzielnie każda z par działa wyśmienicie. Razem, a szczególnie jak przyjdzie spiąć to z @SessionScope, bywa różnie.

Na dobry początek pom.xml:

Listing 1. Co będzie nam potrzebne

<dependency><groupid>com.vaadin</groupid><artifactid>vaadin</artifactid><version>${vaadin.version}</version></dependency><dependency><groupid>com.google.inject</groupid><artifactid>guice</artifactid><version>3.0</version></dependency><dependency><groupid>com.google.inject.extensions</groupid><artifactid>guice-servlet</artifactid><version>3.0</version></dependency><dependency><groupid>javax.inject</groupid><artifactid>javax.inject</artifactid><version>1</version></dependency><dependency><groupid>aopalliance</groupid><artifactid>aopalliance</artifactid><version>1.0</version></dependency><dependency><groupid>javax.servlet</groupid><artifactid>servlet-api</artifactid><version>2.5</version></dependency><dependency><groupid>org.apache.shiro</groupid><artifactid>shiro-core</artifactid><version>1.1.0</version></dependency><dependency><groupid>org.apache.shiro</groupid><artifactid>shiro-web</artifactid><version>1.1.0</version></dependency><dependency><groupid>org.slf4j</groupid><artifactid>slf4j-api</artifactid><version>1.6.1</version></dependency>

Zakładam, że wiesz jak skonfigurować Vaadin i Guice by działały razem. Taki też będzie nasz punkt startu. Mamy aplikację Vaadin + Guice i chcemy dodać do niej zabezpieczenia. Zdecydowaliśmy się na Apache Shiro, bo tak.

Zatem do dzieła….