Ho sviluppato e testato un sito ASP.NET 2.0 con autenticazione sia sotto Windows XP Professional, una installazione MAPS di Windows 2003 Server Web Edition ed anche un Windows XP MCE e tutto funziona tutto benone.
Appena lo pubblico sul server di produzione invece cominciano i guai, o meglio... questo:
L'errore è sollevato da ASP.NET 2.0.50727.0 nella Categoria Web Event con ID Evento 1314.
Event code: 4007
Event message: URL authorization failed for the request.
Event time: 08/05/2007 14.37.06
Event time (UTC): 08/05/2007 12.37.06
Event ID: 74a1a2514bd04e3dbd2c35c117e0ec2f
Event sequence: 2
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1730125140/Root-3-128231014167031250
Trust level: Full
Application Virtual Path: /
Application Path: C:\inetpub\wwwroot\miodominio\www\
Machine name: SERVER7230
Process information:
Process ID: 3908
Process name: w3wp.exe
Account name: NT AUTHORITY\SERVIZIO DI RETE
Request information:
Request URL: http://www.miodominio.it/default.aspx
Request path: /default.aspx
User host address: --.--.--.--
User: phas
Is authenticated: True
Authentication Type: Forms
Thread account name: NT AUTHORITY\SERVIZIO DI RETE
---------------------------------------------------------
Qualche premessa,
- la cartella C:\inetpub\wwwroot\miodominio\www\ ha i diritti di accesso per l'utente SERVIZIO DI RETE e IUSR_EEEEEE e ASP.NET,
- Il framework è attivo su questa macchina.
- L'errore viene sollevato solo dopo che l'autenticazione va a buon fine.
- Mi sono letto questo bellissimo how to http://msdn2.microsoft.com/en-us/library/ms998325.aspx ma non ne ho ricavato personalmente molto
Il webconfig?
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<appSettings>
... qualche chiave...
</appSettings>
<connectionStrings/>
<system.web>
<httpRuntime maxRequestLength="4096" executionTimeout="3600"/>
<machineKey validationKey="la chiave" decryptionKey="la descrizione" validation="SHA1"/>
<sessionState cookieless="UseUri"/>
<pages theme="Default"/>
<compilation debug="true" defaultLanguage="c#">
<assemblies>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="MySql.Data, Version=5.0.6.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>
<add assembly="System.Transactions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies>
</compilation>
<authentication mode="Forms">
<forms name="FormsName" loginUrl="/Entrata.aspx" timeout="20" slidingExpiration="True"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<customErrors defaultRedirect="/Errore.aspx" mode="RemoteOnly"/>
</system.web>
<location path="Img">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
<location path="App_Themes">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Ho fatto un piccolo ricontrollo sulla frase
"- Pagine aspx che non sono coperte da autenticazione funzionano correttamente."
e non è così. HO creato una semplice pagina aspx con un bel "Hello World!" e iis mi risponde chiedendomi utente e password. Ho verificato la protzione in iis e gli utenti sulla cartella e mi sembra tutto ok.
Allora ho verificato IIS senza passare per il framework usando una pagina index.htm e lì funziona. Mi sa che allora qsa non va con il framework e i permessi.
Ho verificato anche gli audit per sfizio, e mi pare che siano corretti, nel senso che ASP.NET non si può connettere da fuori, ma da dentro si. SERVIZIO DI RETE si connette da dentro e da fuori...
Accetto ogni tipi di consiglio!
Grazie 1000
Carlo