1

我有一个这样的 jboss 网络服务:

@Stateless
@SecurityDomain("SecurityDomain")
@RolesAllowed("RolesAllowed")
@WebContext(urlPattern = "/*", authMethod = "BASIC", secureWSDLAccess = true)
@EndpointConfig(configName = "Standard WSSecurity Endpoint")
@WebService(name = "WebServiceName", targetNamespace = "http://webserviceName")

当我使用错误的凭据调用此 Web 服务时,我收到以下错误:

<html>
<head>
<title>JBoss Web/2.1.3.GA - Error report</title>
<style>
<!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-    size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 
{font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-   size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 
B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-  family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}
A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head>
<body><h1>HTTP Status 401 - </h1><HR size="1" noshade="noshade">
<p><b>type</b> Status report</p>
<p><b>message</b> <u></u></p>
<p><b>description</b> <u>This request requires HTTP authentication ().</u></p>
<HR size="1" noshade="noshade"><h3>JBoss Web/2.1.3.GA</h3>
</body>
</html>

我想知道是否有办法自定义这个 401 响应?

请注意,我的 web 服务工作正常(我的问题仅在此自定义中)。

非常感谢。

4

1 回答 1

1

Web 服务使用 JBoss Web 组件来验证用户名和密码(使用基本验证)。(请注意,我使用的是 JBoss-ESB)

为此,我们需要在 \jboss-esb\server\\deploy\jbossweb.sar 中更改这个 jar (jbossweb.jar)。

我们必须编辑文件“ServerInfo.properties”(在 org\apache\catalina\util 中)并将属性“server.info=2.1.3.GA”更改为“server.info=XPTO”。

或者,也可以重新构建这个 jar 并将标签 @VERSION@ 替换为 XPTO(我相信在任务 Ant 中)。

在此分析期间,还确定了我们的 BasicAuthenticator 的可能实现。因此可以配置错误消息 (401) 以使其更具可配置性(最终我们可以返回其他错误)。

为此,您必须更改配置

<property name="authenticators"> 
<..>
<key>BASIC</key>
<value> MyClass </value>

在 war-deployers-jboss-beans.xml 文件中(在 \jboss-esb\server\\deployers\jbossweb.deployer\META-INF 中)。

于 2012-05-03T17:43:29.330 回答