Newsgroup: it.comp.www.asp
Titolo: [asp.net] Autenticazione

Ciao a tutti,
mi sono avvicinato da poco al mondo 
asp.net
, ho letto le faq, il tutorial
su 
gotdotnet.com
 ed effettuato una ricerca su google ma ho ancora un dubbio
sull'autenticazione via database.
In pratica sul mio sito voglio gestire l'autenticazione degli utenti per
l'accesso ad alcune pagine appongiandomi ad una tabella in un database (nel
mio caso Access ma e' ininfluente).
Ho escluso l'autenticazione Windows based (server in hosting) e quella
Forms based (come faccio ad aggiornare il file global.asax?), mi rimane
quella basata sui cookie. 
Nella pagina di login creo un ticket criptato con FormsAuthenticationTicket
e FormsAuthentication.Encrypt, lo scrivo con Response.Cookies.Add e
reindirizzo alla pagina privata con Response.Redirect
Nella pagina privata (per ora una ma ce ne sarano n) recupero il cookie con
Request.Cookies("logincookie") verificando che sia esistente con 
If Cookie Is Nothing Then Server.Transfer("login.aspx")
Se e' tutto ok prelevo il valore associato e proseguo.
Il tutto funziona ma vorrei sapere se la mia soluzione e' valida anche dal
punto di vista della programmazione .Net oppure se ci sono modi migliori
(magari utilizzando qualche altra caratteristica del framework) per
ottenere l'autenticazione.
Ciao e buon anno a tutti !
Starsky


Posto che anche io sto ancora imparando, a me pare che tu stia facendo
esattamente le stesse cose che l'autenticazione Form based fa per conto suo.
Io ricorro all'autenticazione form based e ci gestisco una directory in cui
debbono avere accessi solo gli utenti memorizzati in un db. Modifico il
web.config, mi creo la pagina di login e il gioco e' fatto (piu' o meno) e
non mi devo preoccupare dell'assegnazione del ticket
A sto punto prendo spunto dal tuo thread per verificare se agisco bene o
meno :-)
Claudio

 Claudio
Siccome non mi piaceva la storia di creare il ticket, avevo escogitato
questro trucco:
http://www.aspitalia.com/articoli/aspplus/formauthroles.aspx
Ciao
-- 
AZ [Microsoft .NET MVP]
.NET Community: 
http://www.aspitalia.com/
Il mio blog: 
http://blogs.aspitalia.com/az/
Microsoft MVP: 
http://italy.mvps.org/
Sito personale: 
http://ciclismo.sitiasp.it/

 Starsky
Ciao e buon anno anche a te!


In data Fri, 2 Jan 2004 14:19:17 +0100, Andrea Zani ha scritto:
[cut]
Grazie per le info, ho letto le due pagine ma mi rimangono i dubbi:
1. Il metodo FormsAuthentication.Authenticate autentica in base al
credential data store, che a seconda del tipo di autenticazione si basa o
sull'utente Windows o in quelli listati nel file web.config, ma io non ho
accesso ne al database utenti di Windows ne posso/voglio modificare al volo
il file web.config, quindi come posso utilizzare la classe
FormsAuthentication in pieno stile .Net ? (gli utenti sono riconosciuto
solo se presenti nel mio file Access)
2. Proprio perche' non uso/non so usare coerentemente la classe
FormsAuthentication anche gli altri metodi (tipo il RedirectFromLoginPage)
non mi indirizzano dove vorrei
3. Per i punti 1 e 2 come posso fare in modo che il mio utente dopo la
validazione sia riconosciuto come "validated" dalla classe HttpRequest (es.
HttpRequest.IsAuthenticated) ? In questo modo potrei far gestire l'accesso
alle pagine private tramite l'evento Application_AuthenticateRequest nel
global.asax (cosi' come ho letto nelle pagine che mi hai indicato)
eventualmente usando anche i gruppi.
4. Non provenedo dal mondo classic ASP mi sfugge la differenza tra l'uso di
una variabile Session("pincopallo") da valorizzare se l'utente e' validato
e da controllare nelle pagine successive piuttosto che l'uso di un cookie
(direttamente o indirettamente via framework)
Sono parecchie domande, purtroppo l'aspetto della security via web e'
l'unico punto che ho trovato molto diverso rispetto all'uso del .Net
framework per la creazione di applicazioni classiche client-server.
Ciao e grazie
Starsky

 Starsky
Ciao!


   </system.web>
Non avendo una struttura a directory nel mio sito (sono poche pagine) tutti
i file .htm e .aspx sono nella stessa dir, per cui come gestisco questo
caso nel wb.config ?
Ciao e grazie per la pazienza
Starsky

 Starsky
--
.A    [Microsoft MVP .NET]
UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org
Read my blog at: 
http://www.ugidotnet.org/4.blog

 53919b2f&seekm=%23Cv5p4P0DHA.1740%40TK2MSFTNGP12.phx.gbl#link2
Ehh :-) A volte la quantita' di risultati estratti da google nasconde
quello utile !! Quindi la soluzione e' specificare nel web.config i file
per i quali e' o non e' richiesta l'autenticazione. L'ho provata in
WebMatrix ed e' ok, ottimo.
Ho anche capito/testato che se chiamo una pagina privata (es. private.aspx)
prima di essere autenticato sono reindirizzato alla login.aspx e da qui di
nuovo alla private.aspx se autenticato.
Ma se arrivo direttamente alla login.aspx e mi autentico il metodo
RedirectFromLoginPage mi reindirizza alla default.aspx, dove la metto
l'informazione per una pagina diversa ?
 
Starsky


Moderatore di it.comp.www.asp - Microsoft .NET MVP
http://www.aspitalia.com/
 Enjoy the .NET community!
http://www.dev2dev.it/
 La rete ha connesso nuove particelle!
http://www.extensible.it/
 XML and beyond


uhm... direi (ma spero di essere smentito) che non puoi, perchč il nome
"default.aspx" č cablato nell'implementazione del metodo "GetRedirectUrl"
della classe FormsAuthentication, che viene chiamato da
RedirectFromLoginPage() e lo legge dal parametro ReturnUrl della
querystring.


   // Redir dove ti pare.
ed ovviamente in quest'ultimo caso procedere con un'autenticazione manuale,
usando SetAuthCookie(username, persistente)
dove persistente è un bool che indica se il cookie deve essere valido anche
per altre sessioni o meno.
d'altra parte internamente RedirectFromLoginPage fa proprio questo :)
