Salve,
stiamo provando ad accedere tramite webservices al cmdb, l'ambiente utilizzato è il seguente:
VS 2008, .NET Framework 3.5
CMDBuild v. 1.1.1
Abbiamo realizzato un'applicazione Web che richiede accesso al CMDB per prelevare delle informazioni, lo stralcio di codice
che abbiamo utilizzato per l'accesso al CMDB è il seguente:
Dim myWS As Webservices = New Webservices()
myWS.Credentials = New System.Net.NetworkCredential("user", "password")
Try
myWS.getActivityMenuSchema()
Catch ex As Exception
Console.Write(ex.Message)
End Try
dove user e password sono definiti nel cmdb, il metodo (myWS.getActivityMenuSchema) utilizzato è puramente esemplificativo.
Il file policy.xml sito nella directory tomcat/webapps/cmdbuild/WEB-INF/conf è identico a quello da voi suggerito:
<?xml version="1.0" encoding="UTF-8"?>
<wspolicy wsu:Id="UTOverTransport"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<wsp:ExactlyOne>
<sp:SignedSupportingTokens xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702">
<wspolicy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/IncludeToken/AlwaysToRecipient">
<wspolicy>
<sp:HashPassword/>
</wspolicy>
</sp:UsernameToken>
</wspolicy>
</sp:SignedSupportingTokens>
<ramp:RampartConfig xmlns:ramp="http://ws.apache.org/rampart/policy">
</ramp:RampartConfig>
</wsp:ExactlyOne>
</wspolicy>
Al tentativo di accesso ottengo i seguenti messaggio di errore presenti nel cmdbuild.log
ERROR 2009-12-15 18:03:01 [org.apache.axis2.engine.AxisEngine] WSDoAllReceiver: Incoming message does not contain required Security header
org.apache.axis2.AxisFault: WSDoAllReceiver: Incoming message does not contain required Security header
at org.apache.rampart.handler.WSDoAllReceiver.processBasic(WSDoAllReceiver.java:221)
at org.apache.rampart.handler.WSDoAllReceiver.processMessage(WSDoAllReceiver.java:86)
at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
at org.apache.axis2.engine.Phase.invoke(Phase.java:317)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:264)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163)
at org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:136)
at org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:130)
at org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:829)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:255)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.AuthFilter.doFilter(AuthFilter.java:29)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.PatchManagerFilter.doFilter(PatchManagerFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.ConfCheckFilter.doFilter(ConfCheckFilter.java:31)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.cmdbuild.filters.TranslationFilter.doFilter(TranslationFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:619)
E il messaggio intercettato dall'applicativo è il seguente:
Il contenuto della risposta rilevato dal client è di tipo 'text/html;charset=utf-8', invece del previsto 'text/xml'.
Richiesta non riuscita con messaggio di errore:
--
<html>
<head>
<title>Apache Tomcat/6.0.20 - 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 500 - </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>The server encountered an internal error () that prevented it from fulfilling this request.</u>
</p>
<HR size="1" noshade="noshade">
<h3>Apache Tomcat/6.0.20</h3>
</body>
</html>
--.
Avete suggerimenti da darci per far interagire i due applicativi?
Un saluto,
Claudio