Recently I had to troubleshoot messages that were being sent from an web application hosted on IIS to an external authentication provider. The logs from the application wasn’t something closer to the metal and wasn’t really providing all the details. I really wanted something like fiddler for the webserver. I could have a ran network traces to troubleshoot the issue but the problem was it wasn’t happening consistently. It was sporadic. I knew there would be ETW traces that would have this information. The IIS web logs don’t capture this information.
Here is a example of the SAML authentication process
In the application I was working with, IIS was the relying party and the user was to be authenticated with Identity Provider.
I wanted to troubleshoot the “AuthnRequest” and “Auth Resp” from and to the IIS. This can be applied to any external authentication like credit card authentication.
I fired my favorite tool Perfview and captured all the IIS traces along with other defaults. I wasn’t really interested in the .NET Code.
Here is the command line for Perfview to the IIS Providers
[gist id = “86a6d7daac73484ef504”]
If for some reason that does not work. You could always use the additional providers in Perfview and add these providers which are IIS and HTTP providers.
[gist id = “5ac34bdd047d2d80cc44”]
I let perfview do its job and then stopped the trace when there was an issue.
Here are the ETW events that capture the SAML Request that was sent from IIS to the IDP
Here are the ETW events that capture the SAML Response that was being posted from the IDP to the IIS
With this I was able to troubleshoot message that was being sent and received to the IIS.