2016-09-15 5 views
0

Я запускаю приложение OSGI на Karaf 4.0.4. Это приложение не является веб-приложением.Shiro аннотация по OSGI

Я настроил Apache Shiro для входа в систему с использованием пользовательского SecurityRealm, использующего учетные данные, хранящиеся в базе данных SQL. SecurityManager и область сконфигурированы с использованием Blueprint Эта часть работает нормально.

Я хочу использовать аннотации, как:

@RequiresPermissions("doSomething") 
@RequiresRoles("admin") 
public void myMethodToDoSomething() { 
    ... 
} 

Эти annoations никогда не оценивали. . (Моя безопасность сфера protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) метод никогда не вызывается

После прочтения некоторые документы Широ, я понимаю, что это не работает, потому что у меня нет необходимого перехватчик, как это определено в Shiro Spring turorial:

<!-- Enable Shiro Annotations for Spring-configured beans. Only run after --> 
<!-- the lifecycleBeanProcessor has run: --> 
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/> 
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor"> 
<property name="securityManager" ref="securityManager"/> 

Но, как я не использую весной в моем приложении, эти строки не будут работать.

ответ

2

Вы можете создать модуль плана пространства имен. Это может затем зацепить в Blueprint фасоль установить перехватчик. Как пример см. в blueprint-authz module.

+0

Как установить такой модуль? Как обычный? – jhamon

+0

Да. Это просто пучок. –

+0

Вот как должен выглядеть ваш файл чертежа: https://github.com/apache/aries/blob/trunk/blueprint/blueprint-itests/src/test/resources/authz.xml –