Svaka poslovna Silverlight aplikacija zahtjeva prijavu korisnika, i na web servisu provjeru korisničkih podataka da bi se utvrdile dozvole izvršavanja metoda. WCF i Silverlight nude out-of-box autentikaciju koja se uglavnom zasnima na ASP.NET Membership provideru (u najvećem broju primjera dostupnih na netu). On radi tako da pripremi SQL Server bazu sa svojim tablicama, te se brine oko svih aspekata upravljanja korisnicima (prijava novog, promjena lozinke, osobni podaci, role,...). Kako ja u svojim aplikacijama nikada ne koristim taj membership provider, nego imam svoju bazu, svoje objekte (i ORM za pristup bazi), uz to sam uvjek bio pre ljen napraviti vlasitit membership provider, ne mogu iskoristiti gotove kontrole za prijavu. WCF nudi nekoliko načina prijave korisnika, od kojih su dva opisana ovdje.
Zahtjevi su jednostavni: prijava preko Silverlight aplikacije, metode web servisa ne smiju zahtjevati user id ili slično (npr. GetProducts(int logedUserID), provjera korisničkih podataka mora se obavljati u mojoj klasi, sa mojom bazom, svaki request/respons na Silverlight mora biti „potpisan“ sa ID-em logiranog korisnika, bilo preko cookia ili drugačije.
U ovom tekstu je opisana implementacija autentikacije Silverlight (SL) aplikacije na web servise. Opisana su dva načina konfiguracije WCF servisa, gdje se korisnički podaci spremaju u SOAP poruci i Http Coookiu. Svaki od thi načina ima neke prednosti i mane, a neki od njih su:
| | Custom WCF auth (SSL) | Forms auth (Cookie) |
| Za | - Sav promet ekriptiran, preko SSLa (https), sigurnost velika, nema cookia za ukrasti | - Jednostavna konfiguracija - Mogućnost upotrebe gotovih atributa za WCF metode za presretanje prometa - Radi sa Cassini web serverom (VS2010), lakše debugiranje - TCP transport (višestruko brži od HTTP)
|
| Protiv | - Razvoj teži zbog potrebe punog IIS - Debugiranje prometa (https promet se ne vidi jednostavno) - Pad perfomansi zbog višestrukih handshake requestova (SSL), cca 5-20% manje req/sec - TCP prijenos ne radi sa SSLom
| - CSRF (cross site request forgery) napad, krađa cookia - Sav promet lako vidljiv (packet snifferi,...)
|
Napredni načini bindanja i behaviora WCF servisa (queues, reliable sessions, transactions, message-level security, peer-to-peer messaging, drugi protokoli osim HTTP, HTTPS, TCP) u Silverlightu nisu dostupni zbog ograničenja sandbox modela rada unutar browsera, tako da se može koristiti samo basicHttpBinding (ili neke custom verzije, uz dodatno konfiguriranje). Više...