Saturday, January 24, 2009
C++/MFC: Integration of IIS Access Control with Apache Server
Attachmate's Reflection for the Web (RWeb) product is a Java-based application more often than not run on customers' Windows systems. It depends on an Apache server to serve servlets and validate user credentials. Customer administrators had asked for years that RWeb accept the validation already in effect on their Windows networks rather than require that they configure an additional Tomcat validation layer for RWeb alone. The technical need was an ISAPI redirector with a configurator fit to Tomcat.
When Windows Vista was near release several other changes to RWeb's installation and configuration became necessary and I found myself with an opportunity to clear the table of all enhancement requests. I wrote a pair of Windows native utilities, the IIS Utilities, to answer the requests for IIS-based user credential validation. With that, the RWeb Java product, its InstallAnywhere installer, and and the IIS redirection were simplified, easily tested, and focused on what they do best.
It has recently happened that, while they did not realize in 2008 that their customers running RWeb on a Vista or Windows 7 platform could not use IIS redirection without the IIS Utilities, RWeb Product Management released them, as is, as standalone products on June 10, 2011.
IIS6Utility.exe was written in C++ and uses the ABO API to talk with IIS 5 & 6. It installs an ISAPI filter definition to the IIS metabase for all metabase-oriented operating systems except Windows 2003 Server, where it instead installs an ISAPI extension definition. In addition it modifies two Tomcat configuration text files and four others for RWeb.
IIS7Utility.exe was written in C# and talks to IIS 7 using the .Net Web Administration API. It also installs an ISAPI filter definition to an IIS 7 application pool and modifies the same six files for Tomcat and RWeb configuration. I set it up to be deployed to users via Click-Once for the Attachmate test team's purposes, but when shipped to customers the intent was for it to be installed standalone as an option via RWeb's InstallAnywhere installer.
Both applications were thoroughly unit tested and localized for English, French, German, and Japanese. They both report interesting activity to the Windows event viewer.