Vous êtes sur la page 1sur 10

.

NET passIonnment, tout sImpIement


ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
1
ScurIt ASP.NET 2.0 : I'authentIfIcatIon par formuIaIre
Cet artIcle a t ralIs partIr de la 8eta 1 de 7Isual StudIo 2005. l a pour but de
vous InItIer quelques nouveauts d'ASP.NET 2.0.
1. FaIre tourner son projet sous S
Un nouveau serveur Web pour le dveloppeur
En lanant notre premIer projet Web, nous avons la surprIse de dcouvrIr que notre
sIte ne se lance pas sous S maIs sous un serveur ddI au dveloppeur.


PourquoI pas : Apres tout, pourquoI lancer la grosse artIllerIe (S) quand un
petIt serveur web suffIt. A vraI dIre, le dploIement fInal sous S se faIt sans
probleme mme sI on a travaIll sous 7Isual Web 0evelopper Web Server .

|aIs, voyons comment repasser sous S car j'aI mes habItudes.
FaIre fonctIonner votre projet sous S
Cela se faIt relatIvement facIlement. L'IllustratIon suIvante montre comment
faIre :



Et maIntenant, le lancement de notre sIte vIa 7Isual StudIo se faIt bIen sous S.
.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
2
2. |Ise en place d'une authentIfIcatIon par formulaIre
0es nouveaux composants dIsponIbles
ASP.NET 2.0 fournIt un grand nombre de nouveaux controles et de composants.
Toujours dans le but de nous proposer en standard des fonctIonnalIts nouvelles
et nous faIre gagner du temps.

Nous allons maIntenant restreIndre l'acces notre sIte. Toute personne se plaant
sous le rpertoIre admIn devra ncessaIrement s'IdentIfIer. Nous allons dfInIr
une page logIn.aspx quI permettra de s'authentIfIer.
La bote outIls nous propose des nouveaux composants relatIfs
l'authentIfIcatIon, notamment le composant LogIn .



Nous allons nous en servIr. Nous pouvons remarquer un smart tag sur le
composant quI permet de personnalIser celuIcI. Nous allons clIquer sur
admInIstrate WebsIte .



Nous parvenons alors sur un sIte d'admInIstratIon quI va nous permettre de
paramtrer notre applIcatIon web. Nous pouvons aussI accder ce sIte vIa le
menu ASP.NET confIguratIon de 7Isual StudIo :
.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
J

Les ProvIders (|emberShIpProvIder)

Nous obtenons une page avec un certaIn nombre d'onglets. Et nous allons nous
attarder fournIr un provIder notre composant LogIn quI en attend un (un
|emberShIp ProvIder )



La versIon beta 1 nous fournIt des provIders en standard dont
l'AspNetAccessProvIder quI est rattach une base de donnes Access dans le
rpertoIre 0ata de votre applIcatIon. Ce provIder sera remplac dans la versIon
fInale par un provIder rattach la base SQL server 2005 Express EdItIon.

Nous allons prfrer choIsIr notre propre base de donnes (Sql Server 2000) afIn de
regrouper les tables quI vont y tre cres et les tables que nous dfInIrons nous
mme pour notre applIcatIon web.

Nous crons au pralable notre base de donnes SItePerso vIa l'EnterprIse
|anager de Sql Server. Nous confIgurons ensuIte tres sImplement, dans le sIte
d'admInIstratIon de notre sIte web, l'acces notre base vIa ce formulaIre :

.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
4


En sauvegardant, voIcI les optIons proposes :



Comme vous le voyez un certaIn nombre d'optIons Intressantes sont dIsponIbles.
Dn peut par exemple s'assurer qu' un emaIl corresponde un membre, qu'un
utIlIsateur puIsse retrouver son mot de passe (un peu normal, non :), avoIr recours
une questIon - rponse pour s'assurer qu'Il s'agIt bIen de l'utIlIsateur ou encore
faIre en sorte que le mot de passe soIt automatIquement crypt dans la base de
donnes.

ClIquons : Nous avons alors cr notre provIder sql01 . Jetons un Il notre
base de donnes vIa un dIagramme pour avoIr un aperu des tables et des relatIons
cres.

.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
5

Le nommage des tables permet de comprendre que l'organIsatIon est assez sImple.
Les opratIons sur ces tables sont gres par des procdures stockes.

PuIsque nous avons la structure gnrale, rIen ne nous InterdIt l'avenIr d'ajouter
nos propres tables et de ralIser des lIaIsons avec celles reprsentants les
utIlIsateurs, leurs roles ou leurs profIles.

Fetournons dans l'AdmInIstrate WebsIte , nous allons y dfInIr des membres.
Tout se passe dans l'onglet scurIt . l nous faut dfInIr au moIns un membre et
un role pour pouvoIr tester notre authentIfIcatIon par formulaIre.


.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
6


Allons voIr le fIchIer web.confIg de notre applIcatIon web :



Le fIchIer a t modIfI. Dn y retrouve des sectIons consacres nos dIffrents
provIders (|emberShIp, Fole ou ProfIle). Une sectIon partIculIere
connectIonStrIngs permet de rassembler toutes les chanes de connexIon, ce quI
est relatIvement utIle pour s'y retrouver.
FInalIsatIon de l'authentIfIcatIon par formulaIre

Ajoutons ces lIgnes de code dans le fIchIer web.confIg :

authentIcatIon mode=Forms
forms name=.ASPXUSEFAUTH logInUrl=AdmIn/logIn.aspx /
/authentIcatIon

et

locatIon path=admIn
system.web
.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
7
authorIzatIon
deny users=: /
/authorIzatIon
/system.web
/locatIon

A la page LogIn.aspx , fournIssons le provIder au composant LogIn :

asp:LogIn 0=LogIn1 Funat=server 0estInatIonPageUrl=-/AdmIn/0efault.aspx
|embershIpProvIder=sql01/

CompIlons le tout et accdons au rpertoIre admIn , nous sommes bIen redIrIg
vers la page LogIn.aspx . 7ous constaterez quelques erreurs javascrIpt, c'est
normal nous sommes en beta 1 ! SI nous regardons la source vIa notre navIgateur
web, nous IdentIfIons la lIgne IncrImIner :

scrIpt
src=WebFesource.axd:a=sEamp;r=WebU7alIdatIon.jsEamp;t=6J226J671J96796896
type=text/javascrIpt/scrIpt

Par curIosIt, ouvrez une nouvelle Instance de votre navIgateur web, et copIez cecI

http://localhost/SItePerso/WebFesource.axd:a=sEr=WebU7alIdatIon.js

Pour faIre fonctIonner correctement, nous avons remplac Eamp ; par E .

Nous obtenons du javascrIpt. Le composant LogIn gnere du code en appelant l'
Http Handler WebFesource.axd.

Fefermons cette parenthese, remplIssons le formulaIre LogIn de notre page par le
logIn et le mot de passe que vous aurez dfInI prcdemment. L'authentIfIcatIon se
passe bIen puIsque nous sommes redIrIgs sur la page AdmIn/0efault.aspx .

7ous aurez sans doute remarqu que nous n'avons pas crIt la moIndre lIgne de
code !

7ous allez pouvoIr maIntenant commencer ralIser votre backoffIce . Pour
grer les membres, les dIffrents composants de la famIlle LogIn de la bote
outIls vont pouvoIr vous aIder le faIre tres vIde. 7ous allez pouvoIr jouer avec les
roles aussI pour tablIr des nIveaux d'acces.

8Ien vIdemment, sI une grande partIe se faIt by desIgn , les codeurs auront
acces aux dIffrents AP relatIves sans probleme.
7ous pouvez mme redfInIr vos propres provIders grce aux classes :

System.Web.SecurIty.|embershIpProvIder
System.Web.SecurIty.FoleProvIder

C'est une archItecture bIen pense puIsque notre applIcatIon (son code) ne dpend
pas du type de base de donnes (on change de provIder vIa le web.confIg).
.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
8
Par exemple, sI vous avez une base |ySql , rIen ne s'oppose son utIlIsatIon.
8Ien vIdemment, Il vous faudra coder les provIders (la communaut Dpen Source
en fournIra sans doute tres rapIdement) en hrItant de |emberShIpProvIder, de
FoleProvIder...
J. Un regard dans S

7ous vous doutez bIen que sI j'aI InsIst pour faIre la prsentatIon en me servant
d'S plutot que du serveur Web ddI au dveloppeur, ce n'est pas seulement
parce que j'aI du mal perdre certaInes habItudes. Nous avons des dcouvertes
faIre ;)

Lanons la console d'admInIstratIon d'S. Et nous constatons que nous avons un
nouvel onglet ddI ASP.NET :



CeluIcI permet de spcIfIer sur quelle versIon du framework fonctIonne votre
applIcatIon web.

Festons sur la versIon 2.0 et clIquons sur EdIt ConfIguratIon .

Nous obtenons le tableau de bord suIvant :

.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
9


Ce tableau est mapp sur le fIchIer web.confIg et Inversement ! Je vous laIsse
dcouvrIr toutes les possIbIlIts de grer votre applIcatIon Web de manIere plus
convIvIale que l'dItIon du fIchIer web.confIg, en partIculIer, surtout pour
l'admInIstrateur de la machIne en productIon !

TermInons par un autre aspect de scurIt : je vous aI sans doute agac en
prtendant parler de scurIt et en laIssant en claIr le mot de passe de ma base de
donnes dans le web.confIg. Eh bIen, je l'aI faIt expres ;)
L'admInIstrateur de la machIne en productIon va s'en charger. Et comment :

Crce une optIon de la commande en lIgne d'aspnet_regIIs.exe :
Aspnet_regIIs -pe connectIonStrIngs -app /SItePerso
pe permet d'encrypter une sectIon du Web.confIg

Fegardons notre fIchIer web.confIg :

.NET passIonnment, tout sImpIement
ScurIt ASP.NET 2.0 : l'authentIfIcatIon par formulaIre
FrdrIc |lantoIs pour le sIte 0otNetTech, septembre 2004
10
Ce n'est pas merveIlleux :

7ous allez me dIre comment revIenton en arrIere :

Aspnet_regIIs -pd connectIonStrIngs -app /SItePerso

pd permet de dcrypter une sectIon du Web.confIg
4. ConclusIon
l reste encore beaucoup de choses dIre et dcouvrIr sur le sujet. Pour cette
premIere approche, je m'en suIs tenu l'essentIel.
La versIon fInale d'ASP.NET 2.0 devraIt nous faIre gagner du temps sur des tches
aussI rcurrentes que l'authentIfIcatIon.
Les mthodes l'ancIenne que vous avez pu applIquer avec ASP.NET 1.1
fonctIonnent encore, je vous rassure. 7os backoffIces que vous avez rendus
plus ou moIns gnrIques pourront encore vIvre. |aIs petIt petIt, vous prendrez
de nouvelles habItudes ;)
5. En savoIr plus

La documentatIon sur le sujet est en perptuel IncrmentatIon.
http://msdn.mIcrosoft.com/asp.net/whIdbey/default.aspx

New securIty Features In ASP.NET 2.0
http://msdn.mIcrosoft.com/lIbrary/default.asp:url=/lIbrary/en
us/dnvs05/html/SecFeatNT2.asp

Un numro spcIal de |S0N |agazIne : ASP.NET 2.0 Fevealed !
http://msdn.mIcrosoft.com/msdnmag/Issues/04/06/default.aspx

Une srIe de Webcasts sur ASP.NET 2.0 suIvre :
http://msdn.mIcrosoft.com/traInIng/webcasts/#ASP

ScurIsez vos applIcatIons .NET partIe 1 et 2 (ElIse 0upont)
http://www.dotnetfr.org/sectIons.phpJ:op=vIewartIcleEartId=71
http://www.dotnetfr.org/sectIons.phpJ:op=vIewartIcleEartId=75

N'hsItez pas me contacter :
FrdrIc |lantoIs

EmaIl : fmelantoIs[arobase]free.fr