REST web service invoked from sql server stored procedure through https - web-services

I'm having some problems with invoking my webservice from a stored procedure in sql server 2012.
When I use http protocol the webservice works perfectly, but when I switch to https I get this error in my stored procedure and I just can't figure it out.
The certificate authority is invalid or incorrect
I would appreciate any kind of help.
I did not use the CLR integration, I am using just a basic stored procedure with sp_OAMethod, sp_OACreate, etc.
If needed I can post my code, but I don't believe that the problem comes from the code (because http works fine).
Thank you in advance for any reply!

Related

THTTPRIO SSL using Client Certificate doesn't work as it should

I have a SOAP webserver developed in Delphi XE2 that exposes some methods and it uses SSL. I built my client also in Delphi XE2, and I use THTTPRIO to connect to webserver. My question is related to the use of SSL certificatest with THTTPRIO. If I call my webservice it works without having a certificate installed, but I think that it shouldn't.
Second scenario :I have a self signed certificate which I installed it and after I made a call to my webservice it works also.
When I inspected my events: HTTPRIOAfterExecute and HTTPRIOBeforeExecute, I converted SoapRequest and SOAPResponse to string from TStream and seems that it isn't encrypted in both cases. I also found on another forum the same question but with no response.
I searched for info about SOAP SSL Clients with Delphi but couldn't find any new info. Could any of you guys give me some advices regarding this issue?
If I call my webservice it works without having a certificate
installed, but I think that it shouldn't.
Not many web services require client certificates (with exceptions like banking and other high risk environments). It is more common that clients want to verify the server identity, and this is done with server certificates.
So I would say this web service does work in a normal, expected way.
HTTPRIOAfterExecute and HTTPRIOBeforeExecute, I converted SoapRequest
and SOAPResponse to string from TStream and seems that it isn't
encrypted in both cases
This is correct, the message payload will appear unencrypted because SSL / TLS does encryption on the transport layer. Your application will not see the encrypted data, which actually makes things easier.
You can add encryption for the message payload, there are generic libraries for this (however I have no experience with using encryption HTTPRio).

Web service returns error “The remote server returned an unexpected response: (400) Bad Request”

I am calling Web Service in my windows application(Web service is in same project). It works fine when I use it with test database, but when I change database schema to QA in web Service. It gives me error " “The remote server returned an unexpected response: (400) Bad Request”
The web service is same but still gets error when I change schema.This is Web Service, not WCF service and I am using VS2010. I am not understanding what is happening wrong here. Any help would be greatly appreciated. Thanks.
There is error in paramters you supply to webpage (webservice) of website. Check what you supply in headers of your request object.
Actually, one of the values in the DTO which was passed to webmethod was having some bad data(say, memberid="H00001\0\0\0\0"). I corrected this value and assigned to DTO before passing to webmehtod. And it worked fine. Thanks kostas ch. and Salahuddin for your help!

Axis2 Client: avoid to maintain sessions

I have a big problem in Axis2 client implementation.
I've generated the source code of my client (Java) through the Intellij Idea IDE from a wsdl file.
I use the client to connect in https with a webserver using a smartcard, in which is stored the certificate for the authentication.
Using the first smartcard, everything works fine: I receive data from the webservice in the right way. Using the second smartcard, I receive data related to first smartcard owner.
Analyzing the logs of my application, I've noticed that, at the end of the first communication, a session has been saved. So, in the second connection, the authentication is not needed and data is related to first smartcard owner.
Googling around, I've found that, to avoid to maintain sessions in Axis2 clients, it is needed to set the following:
currentStub._getServiceClient().getOptions().setManageSession(false);
But it does not work properly.
Anyone has suggestions?
I know, this question is quite old.
You could just create a new Stub. This should not have any reference to the old connections/sessions.

WWS server not responding over a network

I have been testing WCF and WWS services, both my own and the SortService by Mykolad Dudar.
First the WCF version is created, and then wsutil is used for the WWS version.
Both the WCF and WWS services are working fine if the server and client run on the same machine. However, the WWS server is not responding if the server and client are on different machines. The WCF version works fine.
The binding is wshttp and security is set to ’None’. No firewalls or anti virus programs running.
This is the error message I get on the client calling the WWS:
Error: There was no endpoint listening at http://10.100.81.218:8080/SortService
that could accept the message. This is often caused by an incorrect address or S
OAP action. See InnerException, if present, for more details.
System.Net.WebException: The remote server returned an error: (400) Bad Request.
The InnerException is empty.
I’m sure I’m missing something, can anyone please help me out?
Got it working. In case anyone else encounters the same problem, here is how:
Turns out that using ‘localhost’ in the web service url was the problem (on the server). Using the machine IP address instead, solved the problem.
Using ‘localhost’ for the WCF service worked fine, so there is a difference between WCF and WWS on this point.

Coldfusion REST API returning 'connection failure. status code unavailable.' when called remotely

Now I want to prefix this with I am unsure whether this should be here or on server fault so I'll post it here to begin with.
We are developing a REST API in Coldfusion 9 which is being hosted on IIS 7 for a client which on certain calls must call another internal webservice. When making these calls from the server that the API is hosted on there are no errors, however when we make the call from a remote machine the following message is returned:
'connection failure. status code unavailable.'
I have googled the issue where the following was suggested as a fix http://www.talkingtree.com/blog/index.cfm/2004/7/28/20040729 but it does not work for me. The following are the notes from my own testing:
The calls which are causing the issue are a mix of get, put, post and delete.
The only common part of each call is the talking to the same webservice.
I am able to call the webservice directly from the places where I make the remote calls to the API from.
While all the calls make a call to the same webservice they do not all make the same call to the webservice.
Ideas:
Call the web service remotely using a URL that resolves to the internal ColdFusion server (e.g. http://[servername]:8300). You will probably have to some configuration to get this working. Reason for doing so is to identify if IIS or ColdFusion is the root cause. If you can hit the internal server remotely then IIS is probably the issue.
Is the web service call over SSL? If so, is remote caller also ColdFusion? If you've answered both yes, check to see if the SSL certificate is trusted by the remote caller's JVM. If not, you need to register it as part of the JVM's keystore.
Can you ping the host server from the caller? If not, does the caller need a "hosts" entry?
If enabled on your host, review the .NET filter and how it interacts with HTTP calls. I've experienced a situation where I was unable to access a folder called "/bin" because the .NET filter intercepted the requests.
The issue turned out to be that each of the calls required basic authentication which the calls themselves were handling, however basic authentication had been turned on in IIS which was causing IIS to intercept any requests with an Authorization header.
This causes an issue as IIS assumes that if authentication is passed up then it is for a user on that machine/domain and would reject any other credentials (which were valid for the system). It was working when we were logged into the machine because it was coming locally it did not need to authenticate the user.