Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Accesso risorse di rete tramite rappresentazione
martedì 20 luglio 2004 - 20.44
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
cnnmax
Profilo
| Junior Member
99
messaggi | Data Invio:
mar 20 lug 2004 - 20:44
Ciao a tutti.
Devo accedere a una risorsa di rete da una pagina ASP per fare upload e download di files.
Come sappiamo il processo ASP gira con l'utente ASPNET che non ha permessi sulle cartelle di rete e non posso dargliene e non posso cambiare l'utente nel file machine.config.
Ho però bisogno di accedere alle risorse di rete in base all'utente che si collega al sito.
Premetto che gli utenti sono utenti del dominio anche se non effettuano il logon.
Ho letto che è possibile usare la "rappresentazione" in modo da cambiare temporaneamente l'utente "ASPNET" impostando "identity impersonate="true"" nel file web.config e usando le API LogonUser e la classe WindowsIdentity.
Solo che mi da il seguente errore :
Errore di rappresentazione.
Descrizione: Eccezione non gestita durante l'esecuzione della richiesta Web corrente. Per ulteriori informazioni sull'errore e sul suo punto di origine nel codice, vedere l'analisi dello stack.
Dettagli eccezione: System.Web.HttpException: Errore di rappresentazione.
Errore nel codice sorgente:
Analisi dello stack:
[HttpException (0x80004005): Errore di rappresentazione.]
System.Web.ImpersonationSuspendContext.GetCurrentToken() +215
System.Web.ImpersonationSuspendContext.Suspend() +53
System.Web.HttpContext.GetConfig(String name) +104
System.Web.Configuration.HttpCapabilitiesBase.GetConfigCapabilities(String configKey, HttpRequest request)
System.Web.HttpRequest.get_Browser()
System.Web.UI.Page.CreateHtmlTextWriterInternal(TextWriter tw, HttpRequest request)
System.Web.UI.Page.CreateHtmlTextWriter(TextWriter tw)
System.Web.UI.Page.ProcessRequestMain()
se invece elimino la riga dal web.config va avanti ma mi da comunque accesso negato.
Grazie a tutti
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 20 lug 2004 - 23:06
Scusa una cosa.... sono un po' tonto...
Ma rappresentazione sarebbe la traduzione in italiano di impersonation per caso ?
Se così fosse ... c'è da ridere LOL ...
Cmq. ho provato tempo fa l'impersonation per un certo periodo, generalmetne è sufficiente questa stringa nel web.config:
<identity impersonate="true" userName="contoso\Jane" password="pass"/>
dove contoso è il dominio, Jane l'utente e poi c'è la password.
ciao
david
cnnmax
Profilo
| Junior Member
99
messaggi | Data Invio:
mer 21 lug 2004 - 10:04
Ora provo come mi hai detto.
Solo che ho bisogno di avere accesso diverso in base agli utenti di windows che non si loggano al sistema ma fanno parte del dominio. Quindi l'idea era quella di impersonare l'utente quando deve fare operazioni su share di rete.
Come mi suggerisci tu l'utente è sempre lo stesso.
Grazie
cnnmax
Profilo
| Junior Member
99
messaggi | Data Invio:
mer 21 lug 2004 - 14:25
Non hai qualche sito di riferimento dove posso trovare un po di documentazione?
Tutte le ricerche che faccio mi riportano cmq ad usare impersonate, infatti funziona, o meglio mi cambia identità ma quando tento di fare l'upload al server con la nuova identità mi da accesso negato.
Per l'upload uso: postedFile.SaveAs(filename)
grazie
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mer 21 lug 2004 - 23:36
Comincia a guardare nel .NET Framework SDK.
Cerca la classe NetworkCredential troverai vari esempi.
ciao
david
cnnmax
Profilo
| Junior Member
99
messaggi | Data Invio:
ven 23 lug 2004 - 12:18
Niente da fare. Non riesco ad accedere in rete.
Ho visto NetworkCredential e fa una cosa del genere:
Dim MyURI As String = "\\Server\nomecondivisione"
Dim WReq As WebRequest = WebRequest.Create(MyURI)
WReq.Credentials = _
New NetworkCredential("username", "password")
ma non mi da accesso.
Riprovando con Impersonate, se scrivo l'utente nel file web.config :
<identity impersonate="true" userName="server\username" password="password" /> funziona, ma non è la soluzione che cerco.
facendo invece :
(1)
Dim impersonatedUser As WindowsImpersonationContext
If LogonUser("username", _
"domainname", _
"password", _
LOGON32_LOGON_NETWORK, _
LOGON32_PROVIDER_DEFAULT, token) = True Then
impersonatedUser As WindowsImpersonationContext = WindowsIdentity.Impersonate(CType(Session("ptrtoken"), IntPtr))
end if
se vado a testare WindowsIdentity.GetCurrent.Name prima e dopo trovo : prima: nomemacchina\IUSR_nomemacchina
dopo: domainname\username
quindi sembra che funzioni solo che appena faccio :
postedFile.SaveAs(filename)
mi compare la maschera di accesso al server e con qualunque utente provo ad accedere mi da accesso negato.
non so più cosa provare :-(
Non è che sbaglio sulle impostazioni dei permessi?
Ho il sito su una macchina XpPro e la cartella condivisa su un controllore di dominio windows2000 e l'utente che deve avere accesso alla share ha tutti i permessi.
Se la prova la faccio con l'utente loggato al sistema funziona tutto ma non è il mio caso.
un'altra conferma che impersonate funziona è che facendo le prove loggandomi al sistema e facendo come in (1) mi ricompare la maschera di accesso alla risorsa.
HELP.....
cnnmax
Profilo
| Junior Member
99
messaggi | Data Invio:
ven 23 lug 2004 - 18:52
Ci sono riuscito.
Si sembra che funzioni. Ora sto risolvendo un altro paio di problemi e se ci riesco provo a scrivere un articolo riguardante l'esperienza fatta con la sicurezza, così partecipo anche al concorso
Cmq alla fine ho usato Impersonate.
grazie a tutti
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 27 lug 2004 - 00:36
Ah ecco... nel leggere il messaggio... stavo aspettando che dicessi come l'avevi risolta LOL.
Beh bene sono contento.
ok!
ciao
david
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !