【问题标题】:How to customize PicketLink AuthenticationFilter?如何自定义 PicketLink AuthenticationFilter?
【发布时间】:2014-07-09 15:02:03
【问题描述】:

我在我的 Web 应用程序上安装并运行了 PicketLink,但我似乎无法按组或角色保护文件夹等资源。 PicketLink AuthenticationFilter (org.picketlink.authentication.web.AuthenticationFilter) 不提供任何方式来说明哪个 url 模式属于哪个组或角色。我将如何保护 admin 目录,以便只有 admin 组中的用户可以访问它?现在,如果您已登录,则可以访问所有内容。

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,但我做不到。我真的希望我能在春天做一些类似的事情。像这样或使用诸如 hasRole 或 isMember 之类的 IDM 函数:

    <intercept-url pattern="/admin/*" access="ADMIN" />
    <intercept-url pattern="/member/*" access="ADMIN,STANDARDUSER" />

【问题讨论】:

  • 我认为这不可能。因此,我制作了自己的自定义过滤器,以在纠察链接过滤器之后检查组和角色。

标签: java authentication authorization picketlink


【解决方案1】:

除非我完全误解了您要做什么,否则我认为您可以通过编程配置界面做您想做的事情。 See the docs section 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");
    }
}

【讨论】:

  • 太棒了,这在 2.6 版下不可用,但现在已添加到 2.7 版。我会试试看!我的项目目前正在使用自定义过滤器,让我也可以做一些其他自定义的事情。
  • 感谢它的工作!如何为每个路径授权多个组和角色?.authorizeWith().group("users,admins")
【解决方案2】:

如前所述,AuthenticationFilter 仅与身份验证有关。

PicketLink 团队正在提供完整的 Servlet 安全支持,其中包括为您的应用程序的 URI 提供基于角色和组的授权。

现在,我建议您创建自己的过滤器。

【讨论】:

    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多