Как настроить PicketLink AuthenticationFilter?
У меня установлено и работает PicketLink в моем веб-приложении, но кажется, что я не могу защитить ресурсы, такие как папки, по группе или роли. PicketLink AuthenticationFilter (org.picketlink.authentication.web.AuthenticationFilter) не предоставляет никакого способа сказать, какой шаблон URL принадлежит какой группе или роли. Как бы я защищал каталог администратора, чтобы к нему могли иметь доступ только пользователи из группы администраторов? Прямо сейчас, если вы вошли в систему, вы можете получить доступ ко всему.
файл web.xml:
<filter>
<filter-name>PicketLinkAuthenticationFilter</filter-name>
<filter-class>org.picketlink.authentication.web.AuthenticationFilter</filter-class>
<init-param>
<param-name>authType</param-name>
<param-value>FORM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PicketLinkAuthenticationFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
<url-pattern>/standarduser/*</url-pattern>
</filter-mapping>
Я пытался создать свой собственный AuthenticationFilter, но не смог. Я бы очень хотел, чтобы я мог сделать что-то, как весной. Нечто подобное или использование функций IDM, таких как hasRole или isMember:
<intercept-url pattern="/admin/*" access="ADMIN" />
<intercept-url pattern="/member/*" access="ADMIN,STANDARDUSER" />
2 ответа
Если я полностью не пойму, что вы пытаетесь сделать, я думаю, что вы можете делать то, что вы хотите, через программный интерфейс конфигурации. См. Раздел 12.2 документации.
public class HttpSecurityConfiguration {
public void configureHttpSecurity(@Observes SecurityConfigurationEvent event) {
SecurityConfigurationBuilder builder = event.getBuilder();
builder
.http()
.forPath("/*.jsf")
.authenticateWith()
.form()
.loginPage("/login.jsf")
.errorPage("/loginFailed.jsf")
.forPath("/admin/*")
.authorizeWith()
.role("Administrator");
}
}
Как было сказано ранее, AuthenticationFilter предназначен только для аутентификации.
PicketLink Team работает в полной поддержке Servlet Security, которая, среди прочего, обеспечит авторизацию на основе ролей и групп для URI вашего приложения.
На данный момент, я бы предложил вам создать свой собственный фильтр.