none
forms authentication ticket RRS feed

  • Domanda

  • ciao,

    ho il seguente problema: ho creato e criptato, quindi salvato in un cookie un formsauthenticationticket.

    ora, ho bisogno di recuperare tale ticket criptato dal cookie e decriptarlo, ma non riesco a farlo..qulacuno puo aiutarmi? il ticket è stato creato iun questo modo:

    string

     

    userData = "ApplicationSpecific data for this user.";

     

    string user = TextBox1.Text;

     

    string pwd = TextBox2.Text;

     

    bool isPersistent = CheckBox1.Checked;

     

    FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, user,

     

    DateTime.Now, DateTime.Now.AddMinutes(30), isPersistent, userData,

     

    FormsAuthentication.FormsCookiePath);

     

    string encrypt = FormsAuthentication.Encrypt(fat);

    grazie

    mercoledì 12 maggio 2010 19:17

Risposte

  • Ciao,

    vedo il tuo codice per la criptazione ma non quello per il salvataggio del cookie, quindi ipotizzo che hai fatto qualcosa del genere...

    HttpCookie hk = new HttpCookie("ticket", encrypt);
    hk.Expires = DateTime.Now.AddYears(1);
    Response.Cookies.Add(hk);
    

    per il recupero e il decrypting...

    HttpCookie hk = Request.Cookies["ticket"];
    FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(hk.Value);
    

    fammi sapere se era quello che cercavi.

    un saluto

    Andy74

    mercoledì 12 maggio 2010 21:31
  • scusa se ho tardato a risponderti, ma tra lavoro e impegni vari il tempo è davvero al limite del possibile! :)

    dunque, premesso che credo di aver utilizzato la classe formsauthenticationticket solo a scopi didattici (ho sempre usato i provider AspNetSql che provvedono a tutte le esigenze del caso) durante un periodo di studio del framework 1.x, non conosco bene il tuo scenario, sostanzialmente il ticket è utilizzato in quei casi dove si vuole personalizzare la gestione delle autenticazioni basate su form salvando informazioni aggiuntive "sensibili" all'interno dello UserData o dove i provider utilizzati per la gestione dei ruoli e delle utenze sono personalizzati o, addirittura, non si dispone di alcun provider, quindi provvedi attraverso un sistema di interrogazione di una banca dati o di altri sistemi (utenze salvate all'interno del web.config, per esempio, o file xml salvati sul server).

    quello che mi sento di dirti è che se implementi un sistema di autenticazione basato su provider personalizzati, o ancora meglio, ti affidi a quelli già implementati e testati di AspNetSql (sempre che tu abbia a disposizione un'istanza di Sql Server), molto del lavoro è bello che fatto, e attraverso semplici direttive all'interno del web.config, puoi bloccare l'accesso a determinate pagine (o addirittura aree) del sito.

    Se cerchi in rete, trovi molta documentazione a riguardo, compresi esempi e articoli a riguardo. Tanto per cominciare te ne passo alcuni direttamente dall'MSDN:

    (Understanding the Forms Authentication Ticket and Cookie)
    http://support.microsoft.com/kb/910443/en-us

    (How to: Implement Simple Forms Authentication)
    http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx

    (Explained: Forms Authentication in ASP.NET 2.0)
    http://msdn.microsoft.com/en-us/library/ff647070.aspx

    Spero questo possa essere un buon inizio, se hai ancora problemi non esitare a chiedere.

    un saluto

    Andy74

    venerdì 14 maggio 2010 21:50

Tutte le risposte

  • Ciao,

    vedo il tuo codice per la criptazione ma non quello per il salvataggio del cookie, quindi ipotizzo che hai fatto qualcosa del genere...

    HttpCookie hk = new HttpCookie("ticket", encrypt);
    hk.Expires = DateTime.Now.AddYears(1);
    Response.Cookies.Add(hk);
    

    per il recupero e il decrypting...

    HttpCookie hk = Request.Cookies["ticket"];
    FormsAuthenticationTicket fat = FormsAuthentication.Decrypt(hk.Value);
    

    fammi sapere se era quello che cercavi.

    un saluto

    Andy74

    mercoledì 12 maggio 2010 21:31
  • no..non lo avevo fatto..sono nuovissimo di asp (provengo da programmazione win form).

    ok, adesso mi è chiaro, hai salvato nel coockie l'oggetto formsauthenticationticket.

    ora la domanda è: ma l'oggetto formsauthenticationticket serve effettivamente per memorizzare le credenziali dell'utente e quindi evitare che questi reinserisca nuovamente i dati di login? o serve solo a permettere l'ingresso in pagine aspx dove solo utenti registrati/loggati possono accedere?

    ho le idee un po confuse...

    infine: è una scelta valida memorizzare nome utente e pwd in un cookie banalissimo purche criptato?

    grazie mille

    giovedì 13 maggio 2010 05:40
  • scusa se ho tardato a risponderti, ma tra lavoro e impegni vari il tempo è davvero al limite del possibile! :)

    dunque, premesso che credo di aver utilizzato la classe formsauthenticationticket solo a scopi didattici (ho sempre usato i provider AspNetSql che provvedono a tutte le esigenze del caso) durante un periodo di studio del framework 1.x, non conosco bene il tuo scenario, sostanzialmente il ticket è utilizzato in quei casi dove si vuole personalizzare la gestione delle autenticazioni basate su form salvando informazioni aggiuntive "sensibili" all'interno dello UserData o dove i provider utilizzati per la gestione dei ruoli e delle utenze sono personalizzati o, addirittura, non si dispone di alcun provider, quindi provvedi attraverso un sistema di interrogazione di una banca dati o di altri sistemi (utenze salvate all'interno del web.config, per esempio, o file xml salvati sul server).

    quello che mi sento di dirti è che se implementi un sistema di autenticazione basato su provider personalizzati, o ancora meglio, ti affidi a quelli già implementati e testati di AspNetSql (sempre che tu abbia a disposizione un'istanza di Sql Server), molto del lavoro è bello che fatto, e attraverso semplici direttive all'interno del web.config, puoi bloccare l'accesso a determinate pagine (o addirittura aree) del sito.

    Se cerchi in rete, trovi molta documentazione a riguardo, compresi esempi e articoli a riguardo. Tanto per cominciare te ne passo alcuni direttamente dall'MSDN:

    (Understanding the Forms Authentication Ticket and Cookie)
    http://support.microsoft.com/kb/910443/en-us

    (How to: Implement Simple Forms Authentication)
    http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx

    (Explained: Forms Authentication in ASP.NET 2.0)
    http://msdn.microsoft.com/en-us/library/ff647070.aspx

    Spero questo possa essere un buon inizio, se hai ancora problemi non esitare a chiedere.

    un saluto

    Andy74

    venerdì 14 maggio 2010 21:50
  • si utilizzo un'istanza di sql server..ma l'intero scenario (piattaforma, framework, ecc..) dovrebbe cambiare perche siamo in fase di aggiornamento.

    non sapevo di questi provider, suppongo che microsoft abbia provveduto a semplificare ulteriormente le cose al programmatore ;) quindi mi documenterò anche su questi.

    in attesa della tua risposta comunque ho approfondito un po le cose sui ticket riuscendo a capirci di piu.

    grazie mille

    ciao!!

    sabato 15 maggio 2010 03:53