2012-04-27 234 views
1

我有一個JBoss Web服務這樣的:自定義401錯誤的Web服務(JBoss的)

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

當調用此WebService與錯誤的憑據i'm收到以下錯誤:

<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服務工作正常(我的問題只在這個定製)。

非常感謝。

+0

我發現了一些非常類似於我在這個鏈接中的東西:https://community.jboss.org/thread/80628?tstart = 0 ...但是這對JBoss(本機)web服務無效。 – JMarques 2012-05-02 17:55:22

回答

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> 

文件戰爭的部署者 - 的jboss-beans.xml文件(在\ jboss的-ESB \服務器\\部署者\ jbossweb.deployer \ META-INF )。