56

La wildcard ? rappresenta utenti non autenticati mentre * rappresenta tutti gli utenti, autenticati e non autenticati. Il mio libro mostra il seguente esempio di autorizzazione URL:Perché <deny users = "?" /> incluso nel seguente esempio?

<authorization> 
    <deny users="?" /> 
    <allow users="dan,matthew" /> 
    <deny users="*" /> 
</authorization> 


ma non il codice di cui sopra hanno lo stesso effetto:

<authorization> 
    <allow users="dan,matthew" /> 
    <deny users="*" /> 
</authorization> 

o ha l'autore includono anche <deny users="?" /> regola per un motivo ?

risposta

74

ASP.NET concede l'accesso dal file di configurazione come una questione di precedenza. In caso di potenziale conflitto, la prima concessione in corso ha la precedenza. Così,

deny user="?" 

nega l'accesso all'utente anonimo. Quindi

allow users="dan,matthew" 

concede l'accesso a tale utente. Alla fine nega l'accesso a tutti. Questo è come se tutti, tranne dan, non abbiano accesso a Matthew.

A cura di aggiungere: e come sottolinea @Deviant, negando l'accesso a non autenticato è inutile, dal momento che l'ultima voce comprende non autenticato pure. Un buon blog discutere di questo argomento sono disponibili all'indirizzo: Guru Sarkar's Blog

33

"In fase di esecuzione, il modulo di autorizzazione itera attraverso gli elementi Consenti e Rifiuta, a partire dal file di configurazione più locale, finché il modulo di autorizzazione non trova la prima regola di accesso adatta a un determinato account utente. o nega l'accesso a una risorsa URL a seconda che la prima regola di accesso trovata sia una regola Consenti o una Regola di negazione La regola di autorizzazione predefinita è. Pertanto, per impostazione predefinita, l'accesso è consentito se non diversamente configurato. "

articolo a MSDN

deny = * means deny everyone 
deny = ? means deny unauthenticated users 

Nel vostro primo esempio negare * non influenzerà dan, Matteo da quando sono stati già autorizzati dalla regola precedente.

Secondo i documenti, qui non c'è differenza nei 2 set di regole.

3

Esempio 1 è per applicazioni asp.net utilizzando moduli authenication. Questa è una pratica comune per le applicazioni Internet perché l'utente non è autenticato fino a quando non è autenticato contro un modulo di sicurezza.

Esempio 2 è per applicazione asp.net utilizzando finestre authenication. Autenticazione di Windows utilizza Active Directory per autenticare gli utenti. Ciò impedirà l'accesso alla tua applicazione. Io uso questa funzione su applicazioni intranet.