Web服务上的自定义401错误(JBoss)

时间:2012-04-27 09:49:21

标签: java web-services authentication jboss http-status-code-401

我有一个像这样的jboss webservice:

@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响应?

请注意,我的网络服务工作正常(我的问题只出在此自定义中)。

非常感谢。

1 个答案:

答案 0 :(得分:1)

Webservice使用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中)。