我有一个战争文件(特别是gerrit.war),它期望容器(特别是码头)处理基本的 HTTP 身份验证并将该信息传递给 webapp。所以我无权访问代码或 web.xml 文件。
我按照这些说明使用退出码头配置将 gerrit 包装在一个领域中,但是当我访问基本 URL (/login/) 时,我收到 403 (Forbidden) 错误。我希望得到一个 401,它会提示我的浏览器要求提供凭据(不是吗?)
我可以发布我的文件,但我没有更改上面示例中的任何内容。让我知道它是否会有所帮助,但是..
我有一个战争文件(特别是gerrit.war),它期望容器(特别是码头)处理基本的 HTTP 身份验证并将该信息传递给 webapp。所以我无权访问代码或 web.xml 文件。
我按照这些说明使用退出码头配置将 gerrit 包装在一个领域中,但是当我访问基本 URL (/login/) 时,我收到 403 (Forbidden) 错误。我希望得到一个 401,它会提示我的浏览器要求提供凭据(不是吗?)
我可以发布我的文件,但我没有更改上面示例中的任何内容。让我知道它是否会有所帮助,但是..
可能有很多方法可以发生这种情况。在我的情况下,它发生是因为我的约束没有角色集。此代码生成 403:
private void secureServlet(ServletContextHandler handler) {
ConstraintSecurityHandler security = new ConstraintSecurityHandler();
security.setRealmName(this.realm);
security.setAuthenticator(new BasicAuthenticator());
security.setLoginService(new WebLoginService(this.engine));
Constraint constraint = new Constraint();
constraint.setName(Constraint.__BASIC_AUTH);
//constraint.setRoles(new String[]{"user"});
constraint.setAuthenticate(true);
ConstraintMapping mapping = new ConstraintMapping();
mapping.setConstraint(constraint);
mapping.setPathSpec("/*");
security.addConstraintMapping(mapping);
handler.setSecurityHandler(security);
}
在角色行中评论将提示码头以 401:s 代替。