I've tired to following the instructions from this link (http://www.hyfinity.net/wmforum/showthread.php?tid=4) but as yet I've not been abel to get WM talking with Sharepoint or the .NET WS we've created.
Is there anything further that can be added to this doucment to try and trace where things are going wrong. The troubleshooting help is very vague and not really helping.
The error we are currently getting is a bog standard "Error 500". Given that I've purposely put in an incorrect password I would have been expecting a 401 error of some sort.
Help!!!!
Is there anything further that can be added to this doucment to try and trace where things are going wrong. The troubleshooting help is very vague and not really helping.
The error we are currently getting is a bog standard "Error 500". Given that I've purposely put in an incorrect password I would have been expecting a 401 error of some sort.
Help!!!!
RE: Sharepoint/.NET Web Service Authentication
Have you tried testing the access to the service from outside WebMaker to ensure that the server Service and WSDL are accessible?
Unfortunately 500 is a very generic server message.
You could try the WSDL URL in a Browser, or another tool e.g. SOAP UI or Altova XML SPY, and see if you get the WSDL displayed.
RE: Sharepoint/.NET Web Service Authentication
We've got to the point where we switched the authentication to Anonymous and got results back without requiring the HttpHeader to be set up.
We then switched authentication back to "NTLM Authentication" and the IIS logs are indicating an Error 401.2.
We've re-added the HttpHeader fragment and still getting the Error 401.2.
RE: Sharepoint/.NET Web Service Authentication
ISS Responds with 401.2 with the specific error number meaning "No authentication was even supplied", then eventually logs timeout on the connection. WebMaker displays the 401 response.
(In case this is not clear, in normal situations IIS will respond 401.2 then expect the client to respond again using its authentication details and go through the whole sequence. We seem to get the 401.2, then webmaker never tries again. In some cases you can avoid this extra round trip by starting off by passing the credentials on the first try - is this what the "preemptive" attribute is for? - we have tried it either way and it doesn't change the final result.)
RE: Sharepoint/.NET Web Service Authentication
Can you tell us what NTLM Authentication Version is used by the server Services?
Currently V3.1.2 support is limited to NTLM version 1.
Are you able to try using a tool (e.g. Fiddler) to view the actual HTTP responses returned. The failing response can be compared with the the Anonymous successful response to identify if there is further information available.
RE: Sharepoint/.NET Web Service Authentication
RE: Sharepoint/.NET Web Service Authentication
We finally settled on Wireshark and and have compared the logs between authenticated and anonymous.
The main difference is that the authenticated log has a Bad Checksum error for the IP protocol and more specifically for the Header Checksum.
The error it gives when trying to establish a connection is
"Header checksum: 0x000 [incorrect, should be 0x12b8]"
RE: Sharepoint/.NET Web Service Authentication
For info, you should be able to use Fiddler ok, but you do need to manually tell Tomcat to use it. You can do this by setting the proxy server settings as described in http://www.hyfinity.com/node/79
For Fiddler you would set the host to localhost, and the port to 8888 for the default settings.
The couple of times I have tried to use Wireshark I have found it harder to understand as it works at a lower level, where as Fiddler has the advantage of dealing with individual HTTP requests.
With regards to the specific error, that does seem strange. Are you able to send through (either on the forum or privately) any logs from Wireshark (or Fiddler :) ) for the successful and failing requests for us to look at in more detail?
Regards,
Gerard
RE: Sharepoint/.NET Web Service Authentication
Having looked into the issues we have verified that we were negotiating to NTLM v2 and have managed to allow NTLM v1 now.
If you look on the web about configuring NTLM levels you will find the following article http://confluence.atlassian.com/display/SPCON/Determining+which+NTLM+version+is+used (which links the following long but good explanation http://technet.microsoft.com/en-us/magazine/2006.08.securitywatch.aspx) which are all about the LMCompatibilityLevel registry key. Assuming those keys are not activley stopping NTLM v2 (i.e.are not set to 3 on your client or 4 or 5 on your server) then that is _not_ what you need to be interested in.
What you actually care about is the local security policy. Reference http://support.microsoft.com/kb/823659, section 15. The settings:
+?+?-?Network Security: Minimum session security for NTLM SSP based (including secure RPC) servers
+?+?-?Network Security: Minimum session security for NTLM SSP based (including secure RPC) clients
have a "Require NLTM v2" setting. That is what is actually forcing you to comunicate using NTLM v2.
Obviously depending on the direction of traffic you may need to change one or both. Also, of course, you should be aware that these settings may be getting altered by a group policy on your environment.
I hope that helps the next person trying to do this.
Tom
RE: Sharepoint/.NET Web Service Authentication
I'm glad you managed to get it working.
Thanks for the detailed information. This will definitely be useful for others in the future.
Regards,
Gerard
RE: Sharepoint/.NET Web Service Authentication
I'm enhancing the application now so that instead of having a hard coded HttpHeader XML fragment I will be importing it from a file (WSCredentials.xml).
I've configured the rules to do this successfully BUT for each instance of a Partial Page/Controller it makes a copy of the file WSCredentials.xml rather than having in a central, edit once, folder.
I'm trying to make it easy to configure this file so that the credentials can be quickly updated when publishing from Dev through to Production in much the same way as the Morphyc file.
Is there a way to do this?
RE: Sharepoint/.NET Web Service Authentication
There are a few different options available to make sure this information is only present in one location.
Firstly you could change the file paths in your insert rules in all but one of the controllers to be relative paths. For example, in Controller1 you would link up the file as normal, but in Controller2 you would set the document location to be +?+?++../../Controller1/Controller/WSCredentials.xml+?+?+?.
In this way you only ever have to change the file under Controller1, and you can remove it from being linked to the other controllers. (To remove a resource use the Node Resource Details screen as detailed in the Translation FAQ. Otherwise it will still get deployed for each controller even though it won+?+?+?t ever be used.)
You could also use an absolute path in each controller, but this would mean that the file needed to be in exactly the same location on each environment.
The second option is to create a central controller to manage loading the credentials information. In each of you existing controllers you would then change the Insert actions to be Invoke Service actions that call this new controller.
You would then only have to load up the WSCredentials.xml file in this new Controller, and so it would only be in one location.
This approach would reduce the impact if you ever had to change where this credentials information is coming from in the future.
The third option is to store the HttpHeader fragment in a database rather than a flat file. In this case you would use SQLStatement actions to retrieve the fragment, rather than inserting a file.
The advantages of this approach are that it is a bit more secure as you are not storing the authentication details in a text file, and that you can preconfigure the databases for each environment, so there would be no additional steps needed to move a release from Dev through to Production.
I guess in an ideal world you would probably do a combination of 2 and 3 (ie use a central controller to get the fragment which in turn performs a SQL lookup), but this would be the most effort to implement, so I guess it depends on your requirements.
I hope this helps.
Regards,
Gerard
RE: Sharepoint/.NET Web Service Authentication
I'll probably go down the DB route given that we store everything else in there.