码头 8 web.xml:允许低权限用户仅访问一个页面,所有其他用户都需要通过安全约束访问管理员用户
jetty 8 web.xml: Allow low-privilege user to access just one page, admin user required for all others via security-constraints
我想保护我的网络应用程序,以便只有 "admin" 用户可以访问所有页面,但特殊的 "test" 用户可以访问状态页面。
这是我试过的方法:
在web.xml中:
<security-constraint>
<web-resource-collection>
<web-resource-name>Everything else</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status page</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>test</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method> <!-- Use http basic authentication -->
<realm-name>MyApp Realm</realm-name> <!-- users are defined in this realm -->
</login-config>
不幸的是,当我尝试使用测试用户访问状态页面 (https://localhost:444/app-0.0.1-SNAPSHOT/hbr/status) 时,我得到以下信息:
Problem accessing /app-0.0.1-SNAPSHOT/hbr/status. Reason:
!role
知道如何解决这个问题吗?
原来 "status" 页面不在应用程序的根目录中,而是名为 "hbr" 的子服务的一部分("hbr" 是唯一的子服务,这就是为什么我没注意)。对第二个安全约束的以下更改导致应用程序按预期工作:
<security-constraint>
<web-resource-collection>
<web-resource-name>Status page</web-resource-name>
<url-pattern>hbr/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>test</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
我想保护我的网络应用程序,以便只有 "admin" 用户可以访问所有页面,但特殊的 "test" 用户可以访问状态页面。
这是我试过的方法:
在web.xml中:
<security-constraint>
<web-resource-collection>
<web-resource-name>Everything else</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<security-constraint>
<web-resource-collection>
<web-resource-name>Status page</web-resource-name>
<url-pattern>/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>test</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method> <!-- Use http basic authentication -->
<realm-name>MyApp Realm</realm-name> <!-- users are defined in this realm -->
</login-config>
不幸的是,当我尝试使用测试用户访问状态页面 (https://localhost:444/app-0.0.1-SNAPSHOT/hbr/status) 时,我得到以下信息:
Problem accessing /app-0.0.1-SNAPSHOT/hbr/status. Reason:
!role
知道如何解决这个问题吗?
原来 "status" 页面不在应用程序的根目录中,而是名为 "hbr" 的子服务的一部分("hbr" 是唯一的子服务,这就是为什么我没注意)。对第二个安全约束的以下更改导致应用程序按预期工作:
<security-constraint>
<web-resource-collection>
<web-resource-name>Status page</web-resource-name>
<url-pattern>hbr/status/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>test</role-name>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>