I am looking for advice on the topic of IWA (a.k.a Kerberos) and Smart GWT.
I have an environment that has IWA enabled among its IIS servers and IE web browsers. This type of configuration delivers a true single sign-on experience to the user (e.g. log into a desktop once and your are done with authentication). HTTP headers are used to negotiate the authentication handshake between the web browser and the web server. Ultimately, a properly configured IE web browser will deliver the user’s encrypted Kerberos token to IIS where it is decoded and the user is authenticated and granted access to the requested content.
Since this handshake falls outside of the Smart GWT data source protocol, I was wonder if I should anticipate issues using the library. When the GET method is invoked via the RestDataSource, should I expect the browser to generate and handle the same HTTP headers it would if I were using vanilla HTML with a FORM-based submission to the server?
Any insight this community can share on the topic would be most appreciated.
Again, this handshake is normally handled by IE in the background. I just want to make sure that the XMLHttpRequest permits the same negotiation to take place.
Ah OK - basically we don’t know for sure, but we can tell you some findings from a related use case: if you go to a web page that has HTTP Basic Auth (not Kerberos) protecting it, the browser will prompt you for credentials with a dialog as usual, and from then on HTTP 401 challenges on XMLHttpRequests are handled transparently. However if you go to a page that is not protected by HTTP Basic Auth, then access a protected URL, there is no automatic handling (you might expect the request to be suspended and a native dialog shown for credentials), instead, your code will ultimately receive the 401 as a transport error.
The first scenario suggests that if you have natively logged into Windows it should automatically handle 401 challenges - but we have not tried this particular scenario.
I have been considernig your feedback (which I appreciate) and wanted to propose a possible workaround.
I am thinking about using the HTMLPane (IFrame) widget to render the output from the web service protected by IWA (Kerberos). My thinking is that the IFrame would operate much like the main web page and web browser should handle the negotiation properly verses the issues that XMLHttpRequest seems to have.
This would be a hybrid approach (which is OK for this particular application) - I will be able to use Smart GWT for the widgets around the HTMLPane, but the presentation within it will be driven by the web service I am contacting.
I will try to confirm this works over the next couple of days. Can you see any obvious issues?
Final note for this thread - I was able to use HTMLPane to render my results and the Kerberos handshake was successfully negotiated. This was not an ideal solution, but it will meet my requirements.
An early prototype using a simple Grid widget with a RestDataSource did not authenticate properly. This particular site still has IE 6 deployed and I just felt that my risk factors were too high to follow my original game plan.
I will likely revisit the Grid prototype testing once they upgrade to IE 8 later this year. If the news is good, I will post it here.