Esse problema foi causado porque o diretório em que os arquivos estavam hospedados não estava acessível para a conta IUSR (apesar do fato de estar acessível para "NETWORK SERVICE" e a identidade do pool de aplicativos). Quando eu estava testando em uma instalação nova do IIS7, eu estava copiando a árvore de diretórios para \ inetpub \ wwwroot, onde IUSR já tinha acesso.
Ainda não está claro por que esse problema se exibiu como um redirecionamento para a página de login (como se ele não estivesse propiciando configurações de autorização corretamente), mas eu identifiquei alguns problemas com a configuração da autenticação de formulários.
Esta parte é crítica porque tudo o que encontrei não explica corretamente (ou adequadamente) isso.
Praticamente em todos os lugares que eu pesquisei, encontrei as seguintes configurações para web.config.
<configuration>
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/login.aspx" />
</authentication>
<authorization>
<deny users="?" />
<allow users="*" />
</authorization>
</system.web>
</configuration>
A maneira como isso é geralmente explicado é que esses usuários não autenticados são redirecionados para login.aspx e os usuários autenticados recebem acesso.
De fato, esta seção de configuração só se aplica a páginas ASP.NET (aspx). Qualquer outro tipo de conteúdo (html, asp, jpg, etc) não é governado por esta configuração.
Para proteger esses tipos de conteúdo, você deve ter "Autorização de URL do IIS 7" instalada e requer a seção web.config como mostrado abaixo.
<system.webServer>
<security>
<authorization>
<clear />
<add accessType="Deny" users="?" />
<add accessType="Allow" users="*" />
</authorization>
</security>
</system.webServer>
Eu vi um lugar que explicava a diferença entre e como IIS6 vs IIS7, mas isso não é totalmente preciso. Existem diferentes mecanismos de autorização para diferentes tipos de conteúdo e você precisa de ambos para restringir o acesso a páginas não aspx.