受保护的url将网页中未受保护的组件泄露给未经身份验证的用户



我相信通过<login-config> + <security-constraint> + <security-role>来实现JSF应用程序的安全性&通过使用<filter>是两种不同的方式!?是吗?

我尝试通过上述第一种方法(使用<login-config> + <security-constraint> + <security-role>)实现安全性,但发现我的受保护网页同时使用受保护的&未受保护的HTML组件与未受保护的资源一起传递给未经过身份验证的用户。

我需要完全保护url,以便受保护的url甚至不会泄漏该网页的任何部分给未经身份验证的用户。我该怎么做呢?

并且,在web.xml中使用<filter>的安全实现是一种自我管理的安全处理方式吗?我相信你可以在过滤/捕获每一个时更细粒度地定制安全性。

这确实是两种不同的方式。<security-constraint>是容器管理身份验证(CMS)的一部分。Filter是本地认证的一部分。

要限制对CMS某些资源的访问,您只需设置其<url-pattern>:

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Application</web-resource-name>
        <url-pattern>/app/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>someRoleName</role-name>
    </auth-constraint>
</security-constraint>

上面的示例对所有匹配/app/*的url施加约束,并且只允许访问someRoleName的用户。

要使用Filter限制对某些资源的访问,您必须同时设置其<url-pattern>:

<filter>
    <filter-name>authenticationFilter</filter-name>
    <filter-class>com.example.AuthenticationFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>authenticationFilter</filter-name>
    <url-pattern>/app/*</url-pattern>
</filter-mapping>

您只需要在其他地方定义角色,可能作为过滤器的<init-param>

最新更新