aprile 2010 Blog Posts

Forum

Era da parecchio che volevo scrivere questo post. Volevo sconsigliare l'uso del forum YetAnotherForum (YAF), progetto rimasto in sospeso per un po' di tempo e ora ripreso. La documentazione è scarsa, sul forum non ti aiuta nessuno... insomma invogliano a comprare l'help. Ho provato per 3 giorni e non sono riuscito a integrarlo con la mia applicazione per avere single sign on. Il forum come applicazione stand-alone, invece, non sembra creare problemi. In mezz'ora, invece, abbiamo integrato (grazie Luca) un forum phpBB3. Technorati tags: Forum

.Substring()

Non sto a spiegare cosa fa perchè tutti l'avranno usato molte volte. Il primo parametro indica l'indice 0-based da cui partire. Il comportamento che non mi aspettavo è che l'indice può arrivare alla Length della stringa senza sollevare eccezioni. [C#] String myString = "abc"; bool test1 = String.Compare(myString.Substring(2, 1), "c") == 0; // This is true. myString.Substring(3, 1); // This throws ArgumentOutOfRangeException. bool test2 = String.Compare(myString.Substring(3, 0), String.Empty) == 0; // This is true. Technorati tags: Csharp

C# o VB.NET?

La domanda si ripete ovunque: ma in una realtà aziendale (di q.si dimensione) è giusto o no decidere un linguaggio comune per tutti? Secondo me è giusto definire un linguaggio di sviluppo e obbligare le risorse a utilizzarlo. Inutile dire che, tra i due, scelgo C#. Le uniche eccezioni possono essere rappresentate da: 1.  un team già avviato al vb.net 2.  la presa in carico di un'applicazione esistente. Nelle nuove realtà io opterei già dai colloqui per la selezione di risorse che sviluppano in C#. Per passare dall'uno all'altro basta poco - è vero - ma a volte i tempi sono davvero rigidi e alcune...

Single Sign On 3/3

SSO per due applicazioni in due sottodomini dello stesso dominio E' il caso di applicazioni del tipo app1.com e app2.app1.com. In questo caso i cookie vengono memorizzati in file differenti e non sono visibili a entrambe le applicazioni. Bisogna utilizzare dei cookie di dominio. Non è possibile utilizzare la RedirectFromLoginPage in quanto non crea un cookie di dominio; è necessario quindi crearli manualmente: FormsAuthenticationTicket  fat = new FormsAuthenticationTicket(1, "ppaperino", DateTime.Now, DateTime.Now.AddYears(1), true, ""); HttpCookie cookie = new HttpCookie(".app2Auth"); cookie.Value = FormsAuthentication.Encrypt(fat); cookie.Expires = fat.Expiration; cookie.Domain = ".app1.com"; HttpContext.Current.Response.Cookies.Add(cookie); FormsAuthenticationTicket fat = new FormsAuthenticationTicket(1, "Paolino Paperino", DateTime.Now, DateTime.Now.AddYears(1), true, ""); HttpCookie cookie = new HttpCookie(".app1Auth"); cookie.Value = FormsAuthentication.Encrypt(fat); cookie.Expires = fat.Expiration; cookie.Domain...

Single Sign On 2/3

Single Sign On con metodi differenti di autenticazione E' il caso di applicazioni che effettuano autenticazione in modo differente (ad esempio, la prima con il proprio database e la seconda con membership API o altre forme di autenticazione). In questo caso il ticket di autenticazione non è adatto per entrambe le applicazioni in quanto conterrebbe solo lo username dell'utente loggato. In questo caso per la seconda applicazione va creato un cookie ad hoc e, ovviamente, va mappato lo user della prima applicazione nella seconda. Supponiamo di avere un utente "Paolino Paperino" nella prima applicazione che viene riconosciuto come "ppaperino" nella seconda. Nella prima applicazione aggiungeremo il seguente...

Single Sign On 1/3

Da un post davvero interessante, mi permetto di parlare di SSO: Molte persone hanno applicazioni che girano sotto versioni differenti del framework .NET, in diversi sottodomini o domini e vorrebbero autenticarsi una volta sola nei vari siti: si parla di Single Sign On. SSO per applicazioni parent/child in una sottodirectory virtuale E' il caso di applicazioni http://app1.com e http://app1.com/app2 con autenticazione Forms. Lo stato dello user loggato viene mantenuto in un cookie sul client. Quando viene richiamata la RedirectFromLoginPage, il cookie viene creato e contiene un FormsAuthenticationTicket criptato con il nome dell'utente loggato. Nel web.config risulta: <authentication mode="Forms">    <forms name=".App1Auth" protection="All" timeout="60" loginUrl="login.aspx" /> </authentication> <authentication mode="Forms">    <forms name=".App2Auth"...