PRB: Request.ServerVariables("LOGON_USER") restituisce una stringa vuota in ASP.NET

Sintomi

Se si tenta di accedere alla variabile Request.ServerVariables("LOGON_USER") in ASP.NET, viene restituita una stringa vuota.

Nota: se si utilizza Microsoft Visual C# .NET, accede a questa variabile la seguente sintassi:
Request.ServerVariables["LOGON_USER"]

Causa

Questo problema si verifica perché le variabili relativi all'autenticazione dell'insieme ServerVariables non vengono popolate se si utilizza protezione accesso anonimo per accedere alla pagina aspx. Questo problema può verificarsi anche se si fornisce l'accesso utente anonimo nella sezione < authorization > del file Web. config.

Risoluzione

Per popolare la variabile LOGON_USER quando si utilizza qualsiasi modalità di autenticazione diverso da None, è possibile negare l'accesso agli utenti anonimi nella sezione < authorization > del file Web. config. Per negare l'accesso agli utenti anonimi nella sezione < authorization > , attenersi alla seguente procedura:

  1. Modificare la modalità di autenticazione nel file Web. config in un valore diverso da nessuno. La seguente voce nel file Web. config, ad esempio, imposta la modalità di autenticazione per l'autenticazione basata su form:
    <authentication mode="Forms" />
  2. Per negare l'accesso agli utenti anonimi nel file Web. config, utilizzare la sintassi seguente:
    <authorization>   <deny users = "?" /> <!-- This denies access to the Anonymous user -->
    <allow users ="*" /> <!-- This allows access to all users -->
    </authorization>

Se si utilizza l'autenticazione di Windows, è possibile utilizzare anche le seguenti operazioni per risolvere il problema:

  1. Modificare la modalità di autenticazione nel file Web. config a Windows come segue:
    <authentication mode="Windows" />
  2. In Gestione servizi Internet, destro del mouse sul file aspx o la cartella di progetto Web e quindi scegliere proprietà.
  3. Se si fa clic su proprietà per la cartella di progetto Web, fare clic sulla scheda Protezione Directory . Se si fa clic su proprietà per il file aspx, fare clic sulla scheda Protezione File .
  4. Nella sezione controllo autenticazione e accesso anonimo, fare clic su Modifica.
  5. Nella finestra di dialogo metodi di autenticazione , deselezionare la casella di controllo Accesso anonimo e quindi selezionare uno di base, Digest o la casella di controllo integrata (NT Challenge/Response) .
  6. Fare clic su OK per chiudere entrambe le finestre di dialogo.
Per istruzioni su come configurare l'autenticazione del Digest, vedere la sezione "Riferimenti" alla fine di questo articolo.

Stato

Questo è il comportamento previsto.

Ulteriori informazioni

ASP.NET fornisce nuove modalità di autenticazione e schemi di autorizzazione, è possibile configurare nel file config. Per questo motivo, modificando la modalità di autenticazione in IIS solo può non sempre produce i risultati desiderati. Pertanto, è necessario considerare anche le impostazioni di protezione nei file config.

Nota: quando si attiva l'autenticazione anonima in combinazione con Windows autenticazione o se si concede l'accesso agli utenti anonimi nella sezione < authorization > mentre si utilizza qualsiasi modalità di autenticazione diverso da None, altre variabili server come AUTH_USER e REMOTE_USER (così come la proprietà HttpContext ) restituiscono una stringa vuota. Per compilare queste variabili, è possibile utilizzare qualsiasi delle risoluzioni menzionata sopra.

In ASP.NET, è anche possibile utilizzare la proprietà IsAuthenticated dell'oggetto Request per determinare se viene utilizzata la protezione di accesso anonimo. IsAuthenticated restituisce "false" se l'accesso anonimo è attivato e restituisce "true" Se si utilizza qualsiasi altro mezzo di autenticazione, quali moduli, Passport, integrata (NT Challenge/Response) o Basic.

Riferimenti

Per ulteriori informazioni sulla protezione in ASP.NET, vedere il seguente sito Web MSDN:
Protezione delle applicazioni Web ASP.NET
http://msdn2.microsoft.com/en-us/library/330a99hc.aspx
Per ulteriori informazioni, fare clic sui numeri per visualizzare gli articoli della Microsoft Knowledge Base riportato di seguito:

306590 INFO: Cenni preliminari sulla protezione ASP.NET
222028 l'impostazione di autenticazione del Digest per l'utilizzo con Internet Information Services 5.0
188717 PRB: Request.ServerVariables("LOGON_USER") restituisce una stringa vuota.
Proprietà

ID articolo: 306359 - Ultima revisione: 30 gen 2017 - Revisione: 1

Feedback