Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何自定义PicketLink AuthenticationFilter?_Java_Authentication_Authorization_Picketlink - Fatal编程技术网

Java 如何自定义PicketLink AuthenticationFilter?

Java 如何自定义PicketLink AuthenticationFilter?,java,authentication,authorization,picketlink,Java,Authentication,Authorization,Picketlink,我已经在我的web应用程序上安装并运行了PicketLink,但似乎无法按组或角色保护文件夹等资源。PicketLink AuthenticationFilter(org.PicketLink.authentication.web.AuthenticationFilter)不提供任何方式来说明哪个url模式属于哪个组或角色。如何保护管理员目录,以便只有管理员组中的用户才能访问它?现在,如果您登录,您可以访问所有内容 web.xml文件: <filter>

我已经在我的web应用程序上安装并运行了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>

PicketLink身份验证筛选器
org.picketlink.authentication.web.AuthenticationFilter
作者类型
形式
PicketLink身份验证筛选器
/管理员/*
/标准用户/*
我试图创建自己的自定义AuthenticationFilter,但无法。我真希望我能像春天那样做。类似于以下内容或使用诸如hasRole或isMember之类的IDM函数:

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

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

PicketLink团队正在使用一个完整的Servlet安全支持,它将为应用程序的URI提供基于角色和组的授权


现在,我建议您创建自己的筛选器。

如前所述,AuthenticationFilter只是关于身份验证的

PicketLink团队正在使用一个完整的Servlet安全支持,它将为应用程序的URI提供基于角色和组的授权


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

除非我完全误解了您的意图,否则我认为您可以通过编程配置界面完成您想要的操作


除非我完全误解了您要做的事情,否则我认为您可以通过编程配置界面做您想做的事情


我认为这是不可能的。因此,我制作了自己的自定义筛选器,以在picketlink筛选器之后检查组和角色。我认为这是不可能的。因此,我制作了自己的自定义筛选器,用于在picketlink筛选器之后检查组和角色。真棒,这在2.6版下不可用,但现在已添加到2.7版。我试试看!我的项目目前正在使用一个自定义过滤器,也让我做一些其他自定义的事情。谢谢它的工作!如何为每个路径授权多个组和角色?.authorizeWith().group(“用户,管理员”)真棒,这在2.6版下不可用,但现在已添加到2.7版。我试试看!我的项目目前正在使用一个自定义过滤器,也让我做一些其他自定义的事情。谢谢它的工作!如何为每个路径授权多个组和角色?.authorizeWith().group(“用户、管理员”)
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");
    }
}