OK, I think I figured this one out. Here are the settings required in
order to prevent a Windows authentication dialog from appearing when
connecting to a Report Manager that uses forms authentication/custom
security extension:
IIS Authentication: Anonymous access checked (Integrated Windows
Authentication can be checked or unchecked)
ReportManager\web.config authentication mode: Windows
ReportManager\web.config authorization mode: <allow users="*"> (the
default)
ReportManager\web.config identity impersonation: false
File access in ReportManager directory: Grant Read & Execute to
IUSR_[MACHINE] and ASPNET
Now, if you change the ReportManager\web.config authentication mode to
None, the aforementioned NullReferenceException occurs. The problem is
that in the AuthenticationRequest event, the Reporting Services code
attempts to access HttpContext.Current.User.Identity. When the
web.config authentication mode is Windows, the context user is set to
an unauthenticated identity. When the web.config mode is None, the
context user is null. (It's not entirely clear that this distinction is
documented anywhere.) The Reporting Services code does not check for
null, hence the exception.
This seems to be a minor bug that should be fixed in a future release.
References:
http://msdn.microsoft.com/library/en-us/dnnetsec/html/SecNetch08.asp http://msdn.microsoft.com/library/en-us/dnnetsec/html/SecNetAP04.asp http://msdn.microsoft.com/library/en-us/dnnetsec/html/SecNetAP05.asp