Forms authentication failed between web server and sql server
- by Matt Bear
I've actually found the solution, but I'm trying to understand why it failed, and why my solution fixed the problem.
We have an application that uses forms authentication between a web server and sql server, web server runs server 2008, sql server runs 2008 r2, and sql server 2008.
In august the sql server was patched with .net 3.5.1, the web server was untouched, and the forms authentication continued to work.
1 week ago we virtualized the web server onto our vSphere server because of failing hardware. Afterwards the form authentication failed with event code 4005, detail code 50201, The ticket supplied was invalid (on the sql server). In fact the sql server started generating Schannel errors and began blue screening 3-4 times a day.
At this point I touched the sql server for the first time(ever), the errors were non specific, any reference to them I could find had to do with either zone alarm(which we don't run), or memory errors. So I applied service pack 1, which stopped the blue screening, but did not fix the forms authentication.
At this point we had a work around, so we put it on the back burner while we completed another project, and I was able to get back on it last night.
First thing was to adjust some code in the webconfig file on the sql server, nothing, next was regenerate and change out the machine key, still no change. Update the DNS servers, no change.
Finally I went through and installed all windows updates, two reboots, (over RDP installed a network card driver which failed, and did not have my server room key, that was fun).
After that, forms authentication was working again. And the sql server stopped generating as many errors, I've gotten two schannel errors since then.
In short, forms authentication began failing when the web server was cloned onto a virtual machine, which caused the sql server to blue sceen? and forms authentication to fail. And could only be fixed by applying patches to the sql server?(I'm wishing I had patched the servers one at a time so I could know for sure which patch on which server fixed it).
My question is why did it fail, and why did patching fix it? I hate fixing something without fully understanding the why and how.